![]() |
Hint verschwindet nicht
Ich habe folgendes Problem:
In meinem Programm werden in einem Stringgrid werden Daten aus einer Datenbank angezeigt. Nun lasse ich mir, wenn der Mauszeiger über einem Datensatz steht die Daten dafür anzeigen. Allerdings verschwindet dieser Hint erst, wenn ich das Stringgrid mit dem Mauszeiger verlasse und nicht schon beim Mousemove, wie er ja eigentlich sollte. Ich poste hier mal einen Auszug aus meinem Programm.
Delphi-Quellcode:
Hab schon versuch
procedure TMain.sgDispMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); // Variablen begin // Mauszeiger auf Stringgrid-Position umrechen x1 := X / 21; x2 := trunc(x1) - 1; y1 := Y / 21; y2 := trunc(y1); y2 := (y2 * 20) - 20; intMousePos := x2 + y2; // Datensatz aus Datenbank holen if ((x2 >= 0) AND (y2 >= 20)) then begin case components[intMousePos] of 'T' : Txt.GetTxtName(strTxtName,intMousePos,intFraID,intTxtID); 'B' : Btn.GetBtnName(strBtnName,intMousePos,intFraID,intBtnID); 'V' : Vari.GetVarName(strVarName,intMousePos,intFraID,intVarID); 'L' : Lst.GetLstName(strListName,strColName,intMousePos,intFraID, intListID, intColNr); 'C' : Lst.GetLstName(strListName,strColName,intMousePos,intFraID, intListID, intColNr); end; // Wenn es ein Text war : if (strTxtName<>'') then begin strComp := 'Text: '; // Datensätze aus der Datenbank holen. with dm.setTxtID do begin intTxtPos := FieldByName('Txt_Pos').AsInteger; intTxtLng := FieldByName('Txt_Length').AsInteger; strTxtCap := FieldByName('Txt_Caption').AsString; end; // Die Hintdarstellung ist tabellarisch, d.h. Sprung ins Unterprogramm... sgDisp.Hint := strComp + ';' + '' + ';' + 'Frame ID<@=80@>' + ': ' + IntToStr(intFraID) + '<@=120@>' + ';' + 'Text ID<@=80@>' + ': ' + IntToStr(intTxtID) + '<@=120@>' + ';' + 'Text name<@=80@>' + ': ' + strTxtName + '<@=120@>' + ';' + 'Text pos.<@=80@>' + ': ' + IntToStr(intTxtPos) + '<@=120@>' + ';' + 'Text length<@=80@>' + ': ' + IntToStr(intTxtLng) + '<@=120@>' + ';' + 'Text caption<@=80@>' + ': ' + strTxtCap; end; // ... geht hier noch weiter, aber zwecks übersichtlichkeit weggelassen ... end; end;
Delphi-Quellcode:
an den Anfang der Prozedur zu schreiben, aber dann wird der Hint garnicht angezeigt. :gruebel:
Application.HideHint;
Vieleicht weiss ja einer von euch einen Rat Mfg Jonny |
Re: Hint verschwindet nicht
Hallo
Zitat:
Ansonsten könnte application.cancelhint weiterhelfen und schau hier (vorletztes Post): ![]() Mfg Frank |
Re: Hint verschwindet nicht
Hallo Frank,
das klappt jetzt wunderbar :-D . :gruebel: Wieso hab ich das nicht schon vorher beim Suchen gefunden. Hier nochmal meine Lösung, damit der Hint verschwindet:
Delphi-Quellcode:
Nochmals vielen Dank :mrgreen:
procedure TMain.sgDispMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); Var strOldHint : String; begin strOldHint := sgDisp.Hint; // .... // .... // .... if (strOldHint <> sgDisp.hint) then Application.CancelHint; end; Jonny. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz