Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Maus-Ereignisse im Sringgrid (https://www.delphipraxis.net/6160-maus-ereignisse-im-sringgrid.html)

Hansa 1. Jul 2003 19:41


Maus-Ereignisse im Sringgrid
 
Hi,

ich will in einem Grid in der Titelzeile einen Hint bringen. Deshalb habe ich ShowHint des Grids auf true gesetzt und bei Row = 0 den Hint gesetzt (im OnMouseMove), also so:
Delphi-Quellcode:
procedure TForm1.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  if StringGrid1.Row = 0 then begin
    case StringGrid1.Col of
      1 : StringGrid1.Hint := 'Nr. eingeben';
      2 : StringGrid1.Hint := 'keine Eingabe möglich';
    end;
  end;
end;
Tja, der Hint hat sich versteckt und taucht nicht auf. :mrgreen:

[edit=Daniel B]Delphi-Tags eingefügt. MfG Daniel B.[/edit]

Christian Seehase 1. Jul 2003 20:46

Moin Hansa,

schau Dir mal Application.OnHint an.
So eine Routine erstellen, und darin prüfen, wo sich denn jetzt gerade der Cursor befindet. Anhand des Prüfungsergebnisses kannst Du dann den Hinttext festlegen.
(hoffentlich, ist nur eine ungeteste Idee ;-) )

Hansa 2. Jul 2003 02:15

So, habe mir nochmals den blöden Hund/Hint angeschaut. Wieso muß ich da an die Application dran ? Das ist mir doch etwas suspekt.

Es geht jetzt, aber nicht immer. :mrgreen: Aber mir fällt da etwas anderes auf: Ist ein Hint etwa ein Ressourcenfresser ? Wenn das blöde Ding überhaupt auftaucht, braucht der Rechner ewig. Ist das normal, also gewollt? Es könnte nämlich auch sein, daß ich das StringGrid in dieser Richtung untersuchen muß.

Christian Seehase 2. Jul 2003 02:44

Moin Hansa,

schau Dir doch mal die Hilfe zu TApplication an, speziell die Eigenschaften.

Luckie 2. Jul 2003 02:57

Delphi-Quellcode:
procedure TForm1.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
var
  MyRow, MyCol: Integer;
begin
  StringGrid1.MouseToCell(x, y, MyCol, MyRow);
  if MyRow = 0 then
    StringGrid1.Hint := 'Hello world'
  else
    StringGrid1.Hint := '';
end;

JoelH 8. Jul 2003 09:16

Re: Maus-Ereignisse im Sringgrid
 
@Luckie

Wie kann ich dass Teil beständig machen, so dass es auch die Hints wechselt wenn man von einer Zelle zu einer anderen geht ? Leider wird dort erst ein Hint angezeigt wenn man die Zelle markiert oder das Grid komplett verlässt und dann wieder zurückkehrt aufs Grid. Aber wenn man sich nur im Grid bewegt verändert sich der Hint irgendwie nimmer :(

mein Code dazu
Delphi-Quellcode:
procedure Tfrm_Objektuebersicht.stg_patenschaftenMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
var
  MyRow, MyCol: Integer;
  betrag : currency;
  waehrung, helpstring : String;
begin
  stg_patenschaften.MouseToCell(x, y, MyCol, MyRow);
  if (Mycol = 1) then
  begin
    stg_patenschaften.showhint := true;
    if (MyRow > 0) then
    begin
      helpstring := trim(stg_patenschaften.cells[MyCol,MyRow]);
      while(POS('.',helpstring) > 0) do
        delete(helpstring,POS('.',helpstring),1);
      waehrung := Trim(copy(helpstring,POS(' ',helpstring),length(helpstring)));
      if (trim(waehrung) = '?') then waehrung := 'EUR';
      try
        betrag := strtoCurr(Copy(helpstring,1,POS(' ',helpstring)));
        stg_patenschaften.Hint := FORMAT('%12.2n',[Waehrungenanpassenfueranzeige(betrag,'EUR',waehrung)])+' '+euro(global_wkz);
      except
       // Ist keine Zahl also kann man auch nix anzeigen !
       stg_patenschaften.showhint := false;
      end;
    end;
  end
  else stg_patenschaften.showhint := false;
end;

Keldorn 8. Jul 2003 10:21

Re: Maus-Ereignisse im Sringgrid
 
Zitat:

Zitat von JoelH
@Luckie

Wie kann ich dass Teil beständig machen, so dass es auch die Hints wechselt wenn man von einer Zelle zu einer anderen geht ? Leider wird dort erst ein Hint angezeigt wenn man die Zelle markiert oder das Grid komplett verlässt und dann wieder zurückkehrt aufs Grid. Aber wenn man sich nur im Grid bewegt verändert sich der Hint irgendwie nimmer :(

application.cancelhint

am Beispiel von Luckie wärs so : (jede Zelle als Hint anzeigen)
Delphi-Quellcode:
procedure TForm1.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
var
  MyRow, MyCol: Integer;
  oldhint:string;
begin
  oldhint:=StringGrid1.hint;
  StringGrid1.MouseToCell(x, y, MyCol, MyRow);
  if (MyRow<>-1) and (Mycol<>-1) then
    StringGrid1.hint:=StringGrid1.Cells[mycol,myrow]
   else
    StringGrid1.hint:='';

  if oldhint<>StringGrid1.hint then Application.CancelHint;
end;
Mfg Frank

JoelH 8. Jul 2003 11:26

Re: Maus-Ereignisse im Sringgrid
 
dess klappt ja wunderbar :) Dank Dir.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:49 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 by Thomas Breitkreuz