Autor |
Beitrag |
D. Annies
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Fr 29.01.10 10:57
Hi, Delpher,
ich "schwebe" mit der Maus über einer Listbox und fahre die einzelnen Einträge ab, das sind die Namen von Schulklassen.
Dann will ich jeweils die zugehörigen Klassenlehrer aus einer anderen Tabelle als Hint sehen.
Ich habe folgenden Code, der aber den Klassenlehrer nicht wechselt:
Delphi-Quelltext 1: 2: 3: 4: 5:
| procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin QAusleihsatz.Locate('Klasse', listbox1.Items[listbox1.ItemIndex], []); listbox1.Hint := QAusleihsatz.fieldbyname('KLK').asstring; end; |
Wie muss ich das ändern?
Gruß, Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
guinnes
Beiträge: 182
Erhaltene Danke: 14
|
Verfasst: Fr 29.01.10 11:14
Erst ShowHint auf False, den Hint wechseln und dann ShowHint wieder auf True
|
|
D. Annies
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Fr 29.01.10 11:20
Danke, reicht aber noch nicht, ich bekomme immer den markierten Eintrag angezeigt.
--- Moderiert von Narses: Beiträge zusammengefasst---
So, jetzt habe ich folgende Lösung:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var item: integer; begin with Sender as TListbox do begin item := itemAtpos(Point(x, y), true); if item >= 0 then begin QAusleihsatz.Locate('Klasse', listbox1.Items[Item], []); listbox1.Hint := QAusleihsatz.fieldbyname('KLK').asstring; end; end; end; |
Aber ich muss jedesmal wieder neu von außen in die Listbox, kann also nicht einfach die Einträge "abfahren".
_________________ ut vires desint, tamen est laudanda voluntas
|
|
guinnes
Beiträge: 182
Erhaltene Danke: 14
|
Verfasst: Fr 29.01.10 12:06
D. Annies hat folgendes geschrieben : | Aber ich muss jedesmal wieder neu von außen in die Listbox, kann also nicht einfach die Einträge "abfahren". |
Deswegen sollst du Showhint auch ausschalten und wieder einschalten. Bei mir klappt das z.B. bei einem TChart problemlos :
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35:
| procedure TPlanung.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); Var Index : Integer;
procedure GetHint ( aList : TStringList); begin with aList do begin fChargenName := Names[Index]; Chart1.Hint := Names[Index] + #$0d + Trim(Copy(Strings[Index],16,255)); end; end;
begin if fEnableMouseMove Then begin Chart1.ShowHint := False; Chart1.Hint := #$0D; fChargenName := ''; Index := Series1.GetCursorValueIndex; if (Index >= 0) and (Index < fChargen.Count) Then begin GetHint(fChargen); fMouseKessel := Trunc(Series1.YValues.Value[Index]); end else begin Index := Series2.GetCursorValueIndex; if (Index >= 0) and (Index < fLaufende.Count) Then GetHint(fLaufende); end; if Chart1.Hint <> #$0d Then Chart1.ShowHint := True; end; end; |
|
|
D. Annies
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Fr 29.01.10 13:10
Tut mir leid, ich krieg's für die Listbox nicht hin
_________________ ut vires desint, tamen est laudanda voluntas
|
|
guinnes
Beiträge: 182
Erhaltene Danke: 14
|
Verfasst: Fr 29.01.10 13:52
|
|
D. Annies
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Fr 29.01.10 14:45
Hi, Guinnes,
na, ja, beruhigt bin ich nicht, wir beide sind wohl eher kaltgestellt!
Trotzdem danke für deine Mühe,
Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
ALF
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: Fr 29.01.10 15:15
Hi, ich versuch mal zu Helfen kenn mich aber in Tabellen und so nicht aus
Aber was machst Du hier:
Delphi-Quelltext 1:
| listbox1.Hint := QAusleihsatz.fieldbyname('KLK').asstring; |
Wo erhöchst Du hier die tabellenzeile oder so.
Du übergibst , wenn ich es richtig sehe, immer den gleichen Wert oder!?
Gruss ALf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
Nersgatt
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Fr 29.01.10 15:33
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
guinnes
Beiträge: 182
Erhaltene Danke: 14
|
Verfasst: Fr 29.01.10 16:00
Ich Habs :
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TForm1.ListBoxMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var item : integer; HS : string; LB : TListBox; begin LB := Sender as TListbox; item := LB.itemAtpos(Point(x, y), true); if item >= 0 then begin HS := LB.Items.Strings[Item]; if HS <> LB.Hint then begin LB.Hint := HS; Application.ActivateHint(Point(X,Y)); end; end; end; |
|
|
D. Annies
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Fr 29.01.10 17:56
Allteer!! (Tschuldigung!)
PERFEKT! Wie bist du denn darauf gekommen?
Ja, so wollte ich es haben. Dann noch wieder den Locate gesetzt - es funzt!
Vielen, vielen Dank! Hatte ich gar nicht mehr mit gerechnet.
Gruß aus Lübeck,
Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
guinnes
Beiträge: 182
Erhaltene Danke: 14
|
Verfasst: Fr 29.01.10 19:40
D. Annies hat folgendes geschrieben : | Allteer!! (Tschuldigung!) |
Na, ja, mit 56 stört mich das nicht mehr, es passt ja
Zitat: | Wie bist du denn darauf gekommen? |
Einfach ( hust ) im Quelltext der Forms.Pas ( da liegt ja das Application-Objekt ) nach Hint gesucht
Zitat: | Dann noch wieder den Locate gesetzt - es funzt! |
Du solltest dir den gefundenen Zeileninhalt aber in der Form merken, sonst wird deine Datenbank bei jedem noch so kleinen Ruckler an der Maus abgefragt, was ja nicht nötig ist
|
|
D. Annies
Beiträge: 1843
windows 7
D6 Enterprise, D7 Pers und TD 2006
|
Verfasst: Fr 29.01.10 22:05
Hi, guinnes,
off-topic:
nun, und ich: detlef := guinnes - 1; (ich auch allteer ..) - Nein, ich war nur so begeistert, hatte nicht gedacht, dass es doch geht - und so (hust) einfach!!
bis denne,
Detlef
_________________ ut vires desint, tamen est laudanda voluntas
|
|
kmma
Hält's aus hier
Beiträge: 1
|
Verfasst: Mo 23.08.10 15:06
Hallo
Ich habe eine Frage zu dieser Lösung. So wie sie dasteht funktioniert das, sobald ich aber eine Variable HS2 einfüge, klappt das nicht mehr, hat jemand eine Ahnung warum? (Wichtig: Ich mache garnichts mit hs2, ich bin da nur draufgestoßen weil ich eigentlich den hint-Text ändern wollte.
guinnes hat folgendes geschrieben : | Ich Habs :
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure TForm1.ListBoxMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var item : integer; HS, hs2 : string; LB : TListBox; begin LB := Sender as TListbox; item := LB.itemAtpos(Point(x, y), true); if item >= 0 then begin HS := LB.Items.Strings[Item]; HS2 := lowercase(hs); if HS <> LB.Hint then begin LB.Hint := HS; Application.ActivateHint(Point(X,Y)); end; end; end; | |
|
|