Autor Beitrag
D. Annies
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: 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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 182
Erhaltene Danke: 14



BeitragVerfasst: Fr 29.01.10 11:14 
Erst ShowHint auf False, den Hint wechseln und dann ShowHint wieder auf True
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Fr 29.01.10 11:20 
Danke, reicht aber noch nicht, ich bekomme immer den markierten Eintrag angezeigt.

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

So, jetzt habe ich folgende Lösung:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 182
Erhaltene Danke: 14



BeitragVerfasst: Fr 29.01.10 12:06 
user profile iconD. Annies hat folgendes geschrieben Zum zitierten Posting springen:
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 :
ausblenden volle Höhe Delphi-Quelltext
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 >= 0and (Index < fChargen.Count) Then
    begin
      GetHint(fChargen);
      fMouseKessel := Trunc(Series1.YValues.Value[Index]);
    end
    else
    begin
      Index := Series2.GetCursorValueIndex;
      if (Index >= 0and (Index < fLaufende.Count) Then
      GetHint(fLaufende);
    end;
    if Chart1.Hint <> #$0d Then Chart1.ShowHint := True;
  end;
end;
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Fr 29.01.10 13:10 
Tut mir leid, ich krieg's für die Listbox nicht hin :roll: :(

_________________
ut vires desint, tamen est laudanda voluntas
guinnes
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 182
Erhaltene Danke: 14



BeitragVerfasst: Fr 29.01.10 13:52 
user profile iconD. Annies hat folgendes geschrieben Zum zitierten Posting springen:
Tut mir leid, ich krieg's für die Listbox nicht hin :roll: :(

Ich kann dich beruhigen, mit ner Listbox krieg ichs auch nicht hin :bawling:
Wahrscheinlich wirken die einzelnen ChartSeries so, als würde die Maus den Chart verlassen und dann wieder betreten
D. Annies Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: Fr 29.01.10 14:45 
Hi, Guinnes,

na, ja, beruhigt bin ich nicht, :wink: wir beide sind wohl eher kaltgestellt!
Trotzdem danke für deine Mühe,

Detlef :motz:

_________________
ut vires desint, tamen est laudanda voluntas
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Fr 29.01.10 15:33 
user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
Hi, ich versuch mal zu Helfen kenn mich aber in Tabellen und so nicht aus :?
Aber was machst Du hier:
ausblenden 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!?

Ne, macht er nicht. Mit dem Locate eine Zeile vorher sucht er den passenden Datensatz raus und zeigt das die Daten aus dem entsprechenden Feld an.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
guinnes
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 182
Erhaltene Danke: 14



BeitragVerfasst: Fr 29.01.10 16:00 
Ich Habs :
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 182
Erhaltene Danke: 14



BeitragVerfasst: Fr 29.01.10 19:40 
user profile iconD. Annies hat folgendes geschrieben Zum zitierten Posting springen:
Allteer!! (Tschuldigung!)

Na, ja, mit 56 stört mich das nicht mehr, es passt ja :wink:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1843

windows 7
D6 Enterprise, D7 Pers und TD 2006
BeitragVerfasst: 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



BeitragVerfasst: 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.

user profile iconguinnes hat folgendes geschrieben Zum zitierten Posting springen:
Ich Habs :
ausblenden 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;