Das OFFIZIELLE PROFAN SUPPORT FORUM
Einsteigerfragen
PROFAN-Programmierung
Helfer & Tools
Anregungen & Vorschläge
PROFAN-NEWS
Die Regeln!
2 - PROFAN-Programmierung

 Neues Thema  |  Zur Übersicht  |  Suchen  |  Einloggen   Neuerer Beitrag  |  Älteres Thema 
 Letzter Eintrag einer Gridbox
Autor: Werner Wagner (---.dip0.t-ipconnect.de)
Datum:   17.12.20 14:10

Hallo zusammen,
ich habe innerhalb eines Programmes eine Gridbox platziert und möchte erreichen, dass nach einer Eingabe die Gridbox zum letzten Eintrag scrollt, damit man die letzte Eingabe sehen kann.
Bei einer Listbox kann man per @Sendmessage die Botschaft $0186 verwenden. Bei einer Gridbox funktioniert das nicht.
:-?

Ich habe aus der Not heraus folgende Trick benutzt:
 whileloop 3
 @SetFocus(g0&)
 @keybd_event($22,0,0,0) 'Bild runter drücken
 sleep 50
 @keybd_event($22,0,2,0) 'Bild runter loslassen
 endwhile
 


Also den Focus auf das Grid gesetzt und dreimal die "Bild runter" Taste simuliert, einmal hatte nicht immer funktioniert!

Hat jemand eine bessere Lösung bzw. gibt es Messages die bei einer Gridbox funktionieren.

Ich wünsche Euch allen frohe Weihnachten, bleibt gesund! :-)

Profan ist wie eine Familie.

Beitrag beantworten
 
 Re: Letzter Eintrag einer Gridbox
Autor: Heinz Brill (---.dip0.t-ipconnect.de)
Datum:   17.12.20 17:00

Einfach die dafür eingebauten Befehle nutzen : :-)

 pos = AddString(grid, zeile)
 SetCurSel Grid, pos
 


Die Gridbox sollte dafür den Stil unsortiert haben, um an das
Ende der Listbox zu springen. Auch bei einer sortierten Listbox
springt der Balken zu dem Eintrag, der zuvor eingeben wurde.

H.Brill
XProfan X4 + FreeProfan

Beitrag beantworten
 
 Re: Letzter Eintrag einer Gridbox
Autor: Arndt Lindner (80.150.206.---)
Datum:   17.12.20 19:21

Folgende Anweisung scrollt bei sortierten und unsortierten Gridboxen ohne Mehrfachauswahl (also Stil 0 oder 1) immer an die letzte Position
 SelectString(g0&,getcount(g0&)-2,left$(getstring$(g0&,getcount(g0&)-1),1))
 


Arndt Lindner



Beitrag beantworten
 
 Re: Letzter Eintrag einer Gridbox
Autor: Werner Wagner (---.dip0.t-ipconnect.de)
Datum:   18.12.20 09:59

Guten Morgen,
vielen Dank für den Tipp. Leider funktioniert es nicht! Die Zeilen werden zwar der Rehe nach grau hinterlegt, ist die Box am Ende ihrer vertikalen Größe angelangt, landen die neuen Einträge unten aber die Box scrollt nicht weiter.

:roll:

L.G.

Werner

Profan ist wie eine Familie.

Beitrag beantworten
 
 Re: Letzter Eintrag einer Gridbox
Autor: Werner Wagner (---.dip0.t-ipconnect.de)
Datum:   18.12.20 10:16

Moin,
vielen Dank für den Tipp! Ich habe es etwas modifiziert:
 SetCurSel g0&,@GetCount(g0&)-1
 


Es funktioniert aber nicht! Es verhält sich ebenso wie das Beispiel von Arndt Lindner. Die Zeilen werden der Reihe nach grau hinterlegt, am Ende des sichtbaren Bereichs scrollt es nicht weiter.

Die Box war Typ 2, also Mehrfachauswahl.
Dann habe ich Typ 0 genommen, was übrigens in der Hilfe gar nicht angeboten wird. Siehe da .... dann funktioniert es!

Leider benötige ich die Mehrfachauswahl. Also bleibt meine Notlösung (virtueller Tastendruck der Pagedown Taste) am Start. Es funktioniert ja damit!

L.G.

Werner :-)

Profan ist wie eine Familie.

Beitrag beantworten
 
 Re: Letzter Eintrag einer Gridbox
Autor: Werner Wagner (---.dip0.t-ipconnect.de)
Datum:   18.12.20 10:20

Nachtrag:
nach Änderung des Typs der Gridbox (von Typ 2 auf 0) funktioniert es.
Das verhält sich wie die Setcursellösung von Heinz Brill).

L.G.

Werner ;-)

Profan ist wie eine Familie.

Beitrag beantworten
 
 Re: Letzter Eintrag einer Gridbox
Autor: Werner Wagner (---.dip0.t-ipconnect.de)
Datum:   18.12.20 10:31

Nachtrag:
Setcursel taucht übrigens in der Hilfe unter Listboxen bzw. Gridboxen gar nicht auf, nur wenn man explizit danach sucht wird man fündig. Allerdings muss man es kennen um danach zu suchen. :grin:

Na ja, da @Getcursel erwähnt wird, ist es eigentlich logisch dass es auch ein Pendant dazu gibt. Asche auf mein Haupt! ;-)

Profan ist wie eine Familie.

Beitrag beantworten
 
 Re: Letzter Eintrag einer Gridbox
Autor: Arndt Lindner (80.150.206.---)
Datum:   18.12.20 11:32

Die Anweisung muss natürlich nach jedem neuen Eintrag erneut aufgerufen werden. Dann sollte es funktionieren.

Arndt Lindner



Beitrag beantworten
 
 Re: Letzter Eintrag einer Gridbox
Autor: Heinz Brill (---.dip0.t-ipconnect.de)
Datum:   18.12.20 17:02

Ich glaube, ich hatte mal vor Jahren ein ähnliches Problem.
Probiere es mal damit :

 $H commctrl.ph
 Declare Handle gb, btn1, String sp
 
 sp = "Nummer;0;60;Name;0;100;"
 Window 600, 400
 
 btn1  = Create("Button", %HWnd, "Fülle", 10, 10, 60, 25)
 gb    = Create("Gridbox", %HWnd, sp, 2,  10, 50, 180, 150)
 
 FuelleGB()
 
 UserMessages $0010
 WhileNot %Umessage = $0010
   WaitInput
   If Clicked(btn1)
      ClearList gb
      FuelleGB()
   EndIf
 EndWhile
 
 Proc FuelleGB
 Declare Long z
 z = 0
 WhileLoop 0, 150
   z = AddString(gb, Str$(&LOOP) + "|" + ".Eintrag")
 EndWhile
 EndProc
 
 Proc LvDeSelect
 Parameters Lv&,Item&
  Declare s#
  Dim s#,1024
  Long s#,12=0
  Long s#,16=~LVIS_SELECTED | ~LVIS_FOCUSED
  SendMessage(Lv&,~LVM_SETITEMSTATE,Item&,s#)
  Dispose s#
 EndProc
 
 Proc LvSelect
 Parameters Lv&,Item&
 Declare s#
 Dim s#,1024
 Long s#,12=$2
 Long s#,16=~LVIS_SELECTED | ~LVIS_FOCUSED
 SendMessage(Lv&,~LVM_SETITEMSTATE,Item&,s#)
 SendMessage(lv&,~LVM_SETHOTITEM ,item&,0)
 SendMessage(lv&,~LVM_ENSUREVISIBLE ,Item&,0)
 Dispose s#
 Endproc
 
 
 End
 


Fische dir mal die Procs LVSelect() und LVDeselect()
raus. Nach z = AdString(…) dann
LvDeSelect(gb, -1) ' alle deselektieren
LvSelect(gb, z)
SetCurSel gb, z

Das $H commctrl.ph nicht vergessen.

H.Brill
XProfan X4 + FreeProfan

Nachricht bearbeitet (18.12.20 19:11)

Beitrag beantworten
 Foren-Liste  |  Baumstruktur   Neuerer Beitrag  |  Älteres Thema 


 Foren-Liste  |  Zur Registrierung 
 Benutzerlogin
 Benutzername:
 Passwort:
 Login-Daten speichern:
   
 Passwort vergessen?
E-Mail-Adresse oder Username unten eingeben. Dann wird Dir per e-Mail ein neues Passwort zugeschickt.

phorum.org