Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > XProfan

XProfan Alles rund um die Programmiersprache XProfan.

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag Hamachi deinstallieren
Aufrufe: 58, Antworten: 5
Gehe zum ersten neuen Beitrag Bundesliga-Tippspiel Saision...
Aufrufe: 7670, Antworten: 187
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26970, Antworten: 4223
Gehe zum ersten neuen Beitrag PPF - Shoppingwahn
Aufrufe: 50963, Antworten: 1397
Gehe zum ersten neuen Beitrag Algorithmen Teil IV...
Aufrufe: 3361, Antworten: 128
Gehe zum ersten neuen Beitrag Pc lahmt plötzlich
Aufrufe: 186, Antworten: 6
Gehe zum ersten neuen Beitrag PC fährt nicht mehr hoch.
Aufrufe: 0, Antworten: 0
Gehe zum ersten neuen Beitrag Von Live CD Windowspfad...
Aufrufe: 329, Antworten: 19
Gehe zum ersten neuen Beitrag Captur 2.2 (Snow Leo)
Aufrufe: 28, Antworten: 0
Gehe zum ersten neuen Beitrag Captur 2.3 (Lion)
Aufrufe: 34, Antworten: 0
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 12.08.2010, 22:27   #1 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von JörgG
 
Registriert seit: 08.12.2009
Ort: Mecklenburg
Beiträge: 202
Standard Listview-Markierte Zeile nach oben scrollen

Hallo zusammen, mein Prog hat sich prächtig entwickelt. (Dank eurer Hilfe)
Mit der selectLine- Funktion von Frank kann ich ja mein Suchergebnis in den sichtbaren bereich scrollen. Nun ist so, das die Markierung sehr oft kurz über den unteren Rand des sichtbaren Bereichs klebt. Da ich aber schon während der Eingabe die Suche starte, iwäre es besser, wenn die markierte Zeile am oberen Rand klebt, so daß ich dann sehr schnell sehen kann, welche Namen,Vornamen (alphabetisch sortiert) im Anschluss des momentanen Suchergebnisses stehen, um ggf. die Sucheingabe mit esc zu verlassen & mit den Pfeiltasten zb. zwei Zeilen tiefer den gesuchten Namen zu markieren bzw. auszuwählen. In Frank's reichhaltigen Funktionsangebot habe ich nichts in dieser Richtung gefunden... Gibt es da vllt noch ein Funktiönchen, mit der ich das iwie hinwerkeln kann?
Gruß Jörg
JörgG ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 12.08.2010, 23:21   #2 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

Der Trick ist: Vor dem SelectLine ein weiteres SelectLine einbauen, womit du ganz nach unten in die Liste springst. Wenn dann dein eigentliches SelectLine kommt, hast du den Eintrag schönen oben "kleben". Das wurde von MS bischen blöd geregelt und ein Flag oder einen Style für das Sprungverhalten gibt es wohl nicht.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist offline   Mit Zitat antworten
Alt 12.08.2010, 23:40   #3 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von JörgG
 
Registriert seit: 08.12.2009
Ort: Mecklenburg
Beiträge: 202
Standard

alles Klar! probier ich gleich, hoffentlich "zappelt" dadurch das Listview nicht zu arg, weil die Aktualisierung ja nach jedem getippten Buchstaben ausgeführt wird.
Vielen Dank für den Tip
Gruß Jörg
JörgG ist offline   Mit Zitat antworten
Alt 13.08.2010, 00:03   #4 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von JörgG
 
Registriert seit: 08.12.2009
Ort: Mecklenburg
Beiträge: 202
Standard

Hi Frank, klappt super! ich habe den ersten select nur ein kleines Stückchen tiefer gesetzt, also TrefferIndex + 70 (der sichtbare Bereicht zeigt ca. 60 Zeilen)
Dadurch wird das verschieben sehr schnell ausgeführt, stört kein bischen
Ist ein geiler Trick Danke!
Gruß Jörg
JörgG ist offline   Mit Zitat antworten
Alt 13.08.2010, 10:45   #5 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

Etwas tiefer setzen geht auch. Wenn dein Prog überall "hackelfrei" laufen soll, würde ich ermitteln, wieviel Zeilen im sichtbaren Bereich liegen können. Je nach Größe der Systemschrift und BS passen bei dem einen mehr Einträge rein als bei jemand anderem.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 13.08.2010, 13:45   #6 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von JörgG
 
Registriert seit: 08.12.2009
Ort: Mecklenburg
Beiträge: 202
Standard

Zitat:
...würde ich ermitteln, wieviel Zeilen im sichtbaren Bereich liegen können...
ermitteln kann ich dies ja mit GetVisibleLines(H,B). Und mit mit ShowListview(H,X,Y,B,H) kann ich ja die Anzahl der Zeilen bestimmen (indirekt- ich mach das Fenster entweder etwas höher oder niedriger). Oder meinst du das anders?
Wie kann ich aber die Schriftart /-größe im Listview festlegen?
Gruß Jörg
JörgG ist offline   Mit Zitat antworten
Alt 13.08.2010, 13:52   #7 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

Schau dir mal den Democode an, um eigene Schriftarten zu benutzen.
GetVisibleLines() ist dazu da, die Anzahl sichtbarer Zeilen zu bestimmen, genau.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist offline   Mit Zitat antworten
Alt 14.08.2010, 11:15   #8 (Direktlink)
MoRoGeP-Träger 2011
 
Benutzerbild von horsthorn
 
Registriert seit: 06.02.2009
Ort: Heidelberg
Alter: 71
Beiträge: 1.878
Beitrag

@Jörg
So sieht der Anfangscode für eines meiner zwei Listview in meinem Dateibrowser aus:
Zitat:
PROC LINKES_FENSTER
PARAMETERS path1$
CHDIR path1$
L_font&=CREATE("FONT",font$,VAL(gross$),0,VAL(dick$),0,0)
IF checkbox$="0"
modus&=$30 'Mit diesem Modus wird immer gestartet
ELSEIF checkbox$="1"
modus&=$34
ENDIF
Case (linien$="1"):modus&=modus&+$1 'Linien Ja oder Nein
If (no_icon$="0") 'Icon oder nicht Icon ?
LINKS_VIEW&=CreateListView(%hwnd,%hinstance,RGB(VR%,VG%,VB%),RGB(HR%,HG%,HB%),-1,modus&)
SetImageList(LINKS_VIEW&,ilistL&)
SetFont LINKS_VIEW&,L_font&
ElseIf (no_icon$="1")
LINKS_VIEW&=CreateListView(%hwnd,%hinstance,RGB(VR%,VG%,VB%),RGB(HR%,HG%,HB%),-1,modus&)
SetFont LINKS_VIEW&,L_font&
EndIf
Die Informationen werden dazu aus einer INI-Datei gelesen, die über 'Einstellungen' nach dem Gefallen des Users verändert werden kann.
Mit der Listview.dll von Frank ist alles möglich
__________________
Gruss, horst
Computer werden kleiner und kleiner, bald verschwinden sie völlig.
(Ephraim Kishon 1924-2005)

Win7-Home-Premium 32-Bit - XProfan12.0ß-S14 - Chrome-18.0.1025.142 m
http://www.web-treffpunkt.de
horsthorn ist gerade online   Mit Zitat antworten
Alt 17.08.2010, 00:00   #9 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von JörgG
 
Registriert seit: 08.12.2009
Ort: Mecklenburg
Beiträge: 202
Standard

Jo, Danke Horst, ist doch gleich viel verständlicher, wenn zu einem Thema ein kleiner Schnipsel zum "nachvollziehen" im Spiel ist

Im Rahmen dieses Projektes wollte ich den Inhalt einer Spalte auf eine bestimmte Anzahl von Zeichen einkürzen. Mein Schwerpunkt: es sollte schnell laufen (20.000 Einträge). Rausgekommen ist eine kleine Proc, die ich hier mal reinstellen wollte. Vllt. braucht jemand so etwas. Sie arbeitet nicht mit den üblichen Stringoperationen, sondern greift direkt auf dem Speicher zu:
Code:
proc kurz     
   'proc kürzt die inhalte einer spalte einer liestview auf eine bestimmte zeichenanzahl ein;
   'benötigt Frank Abbing's Listview.dll
   'parameter: handle von listview		(long)
	      'spaltenindex			(int)		
              'zeilenindex ab wo gekürzt wird	(long)
              'zeilenindex bis wo gekürzt wird	(long)
	      'position ab welche stelle gekürzt wird	(int)
	      'größe des bereichs, zum auslesen	(long)
    
    parameters lv&,sp%,st&,ed&,p%,mem&
    declare txt#	'nimmt den iteminhalt auf
    dim txt#,mem&	'ausreichend platz zuweisen

    whileloop st&, ed& 				'löppt den definierten tabellenabschnitt durch (st&-ed&)
          getitemtext(lv&,txt#,sp%,&loop)	'den inhalt von spalte X der aktuellen zeile in den speicherbereich txt# schreiben
          if MemPos(txt#,0,chr$(0)) > p% 	'wenn die position des nullbyte über 40 ist
             char txt#,p% = Chr$(0) 		'in das byte 40 des bereiches txt# ein nullbyte erzeugen (kennzeichnet das ende eines strings in einem bereich)
             setitemtext(lv&,txt#,sp%,&loop)	'den manipulierten (gekürzten) bereich in die tabelle zurückschreiben
          endif
    endwhile

endproc
Läuft wirklich flink...
Wichtiger Hinweis an Frank: Ich hatte zuerst anstelle MemPos() deine Funktion GetNullOffset(B) angewendet, die mir ja die pos. vom Nullbyte lieferte. Mit MemPos() war die Abarbeitung der kompletten Tabelle jedoch deutlich schneller. (Bitte nicht als "nörgelei" verstehen, vllt. ist das ja noch ein unentdeckter Bug), weil ja sonst deine Funktionen alle auf Geschwindigkeit zugeschnitten sind.
Gruß Jörg

Geändert von JörgG (17.08.2010 um 00:04 Uhr) Grund: Kleiner fehler im code
JörgG ist offline   Mit Zitat antworten
Alt 17.08.2010, 07:13   #10 (Direktlink)
MoRoGeP-Träger 2011
 
Benutzerbild von horsthorn
 
Registriert seit: 06.02.2009
Ort: Heidelberg
Alter: 71
Beiträge: 1.878
Blinzeln

@Jörg
Am besten gefällt mir in deinem Code das:
Zitat:
'löppt den definierten
Das Wort ist für mich neu
PS: Nicht böse sein
__________________
Gruss, horst
Computer werden kleiner und kleiner, bald verschwinden sie völlig.
(Ephraim Kishon 1924-2005)

Win7-Home-Premium 32-Bit - XProfan12.0ß-S14 - Chrome-18.0.1025.142 m
http://www.web-treffpunkt.de
horsthorn ist gerade online   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 17.08.2010, 10:47   #11 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

Zitat:
Wichtiger Hinweis an Frank: Ich hatte zuerst anstelle MemPos() deine Funktion GetNullOffset(B) angewendet, die mir ja die pos. vom Nullbyte lieferte. Mit MemPos() war die Abarbeitung der kompletten Tabelle jedoch deutlich schneller. (Bitte nicht als "nörgelei" verstehen, vllt. ist das ja noch ein unentdeckter Bug), weil ja sonst deine Funktionen alle auf Geschwindigkeit zugeschnitten sind.
Das Problem liegt beim häufigen Aufruf. Die Assembler-Funktionen funktionieren oft in 0 Millisekunden. Aber der Dll-Aufruf dauert jedes Mal 16 ms. Ruft man das in einer Schleife auf, dauert das eben.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist offline   Mit Zitat antworten
Alt 17.08.2010, 16:06   #12 (Direktlink)
Weiß worum´s geht
 
Benutzerbild von JörgG
 
Registriert seit: 08.12.2009
Ort: Mecklenburg
Beiträge: 202
Standard

Zitat:
...der Dll-Aufruf dauert jedes Mal 16 ms.
könnte man die dll, oder einzelne Funktionen davon, so laden, daß der Aufruf einer enthaltenden Funktion wie ein direkter Befehl wirkt?
Vllt. die Funktion am Anfang des Progs in einem Speicherbereich laden & dort direkt ausführen oder sowas in dieser Richtung. - Wär ja schade, wenn deine Superschnelle Assemblerprogrammierung durch den dll-Aufruf (zumindest in einer Schleife) ausgebremst wird.
Ist aber jetzt einfach nur "laut gedacht" , so wie ich das mit meinem mageren Verständnis für dll & Co so interpretiere...
Gruß Jörg
JörgG ist offline   Mit Zitat antworten
Alt 17.08.2010, 19:24   #13 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

Ich denke, ein Aufruf mit XProfans ImportDll/ImportFunc dürfte schneller sein.
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.
Frabbing ist offline   Mit Zitat antworten
Antwort

  Paules-PC-Forum.de > Programmierung > XProfan

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Taskleiste nach oben gerutscht sobi Windows 95/98/ME/2000/NT 8 26.05.2011 20:10
Listview.dll und sortieren nach Datum Ralph Theobald Dlls, Includes, Units & Prozeduren 1 24.01.2010 20:21
Listview Drag n Drop Zeile verschwindet PaRaDoX-Vision Dlls, Includes, Units & Prozeduren 7 06.07.2009 06:43
CSS - Box weiter nach oben Cage Homepagegestaltung 2 23.04.2006 15:46
Netzteillüfter nach oben oder nach unten? Dakotasilver Hardware - Problemlösungen 9 06.04.2005 18:36



Alle Zeitangaben in WEZ +2. Es ist jetzt 12:11 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2