Thema: Delphi Hint verschwindet nicht

Einzelnen Beitrag anzeigen

Jonny-Flash

Registriert seit: 18. Mai 2004
Ort: HH
18 Beiträge
 
Delphi 7 Professional
 
#1

Hint verschwindet nicht

  Alt 8. Jul 2004, 08:04
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:
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;
Hab schon versuch
  Application.HideHint; an den Anfang der Prozedur zu schreiben, aber dann wird der Hint garnicht angezeigt.

Vieleicht weiss ja einer von euch einen Rat

Mfg
Jonny
  Mit Zitat antworten Zitat