Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi OnExit Event einer einzelnen StringGrid Zell (https://www.delphipraxis.net/136798-onexit-event-einer-einzelnen-stringgrid-zell.html)

Wonx 8. Jul 2009 07:48


OnExit Event einer einzelnen StringGrid Zell
 
Also mein Problem ist folgendes ich habe ein StringGrid in dem ich mit FormatFloat bestimmten Spalten bestimmte Formatierungen
zugewiese habe das klappt auch in soweit ganz gut, solange der Benutzer jedes mal schön Enter drückt da ich den ganzen Kramaux einfahc in das OnEnter Event von meinem StringGrid geschrieben habe.
Das Problem das ich habe besteht dadrin, das ich bis jetzt noch keine möglichkeite gefunden habe festzustellen ob der Benutzer auf
eine einzelne Zelle klickt bzw wann er diese wieder verlässt was bewirkt das der eingegeben Wert nicht wie gewollt formatiert wird.
Da ich aber mal meine gehört zu haben das es irgendwie möglich ist die einzelnen TEditfelder der einzelnen Spalten zuzugreifen dachte ich mir das es dann doch auch bestimmt möglich sit die einzlenen OnExit Events dieser Spalten-TEditfelder auszulösen ^^
Auch nach längerem suchen bin aber leider noch nicht so ganz auf die Idee gekommen wie man das genau machen könnte :glaskugel:
bzw ob es überhaupt möglich ist -.-!

uligerhardt 8. Jul 2009 08:22

Re: OmExit Event einer einzelnen StringGrid Zell
 
Vielleicht kannst du OnSelectCell missbrauchen? Einfach in der Formularklasse zwei Variablen FLastFocusedRow und FLastFocusedCell anlegen, die du in OnSelectCell auswertest und updatest.

Blup 8. Jul 2009 08:24

Re: OmExit Event einer einzelnen StringGrid Zell
 
OnGetEditText
OnSetEditText

Lannes 8. Jul 2009 08:36

Re: OmExit Event einer einzelnen StringGrid Zell
 
Hallo,

ich würde die Formatierung nur bei der Darstellung in OnDrawCell vornehmen.

Wonx 8. Jul 2009 09:18

Re: OnExit Event einer einzelnen StringGrid Zell
 
Erstmal vielen dank für die schnelle Antwort^^

Also

Zitat:

Zitat von Lannes
Hallo,

ich würde die Formatierung nur bei der Darstellung in OnDrawCell vornehmen.

das Problem wasich dabei hatte war das er mir die Zelle dann nach jeder eingabe der eines Einzelnen Zeichen formatiert(Es sei denn
ich hatte da irgendnen anderen Fehler drinne der es so aussehen lassen hat was ich acuh nicht ausschließe :? )

Mit on GetEdit Text sollte es Theoretisch funktioneieren, endspricht aber nicht 100% dem Zweck der sache da ich auch noch andere
Sachen, wie die Nagesproche Zelle farblich markieren etc..., machen wollte
Das gleiche Problem ergiebt sich demendsprechend auch bei OnSelectCell.
Ich werds warscheinlich auch erstmal so machen aber falls doch jemand weiß wie das TEdidfeld hinter Zelle als solches ansprechen kann wär das schon besser ^^

Lannes 8. Jul 2009 10:20

Re: OnExit Event einer einzelnen StringGrid Zell
 
Hallo,

durch den Beispielcode werden Zahlen mit 2 Nachkommastellen nur bei den Spalten 2 und 4 im Grid rechtsbündig angezeigt, Text wird linksbündig ausgegeben, Fehleingaben werden sichtbar.

Es ist kein weiterer Code in anderen Events erforderlich.

Delphi-Quellcode:
procedure TForm1.StringGridDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var p : PChar;
    e : Extended;
begin
  if not (gdFixed in State) then
    if ACol in [2,4] then
      begin
      p := PChar(StringGrid.Cells[ACol,ARow]);
      if TextToFloat(p,e,fvExtended) then
        begin
        p := PChar(FormatFloat('#,##0.00 ',e));
        StringGrid.Canvas.FillRect(Rect);
        DrawText(StringGrid.Canvas.Handle,p,-1,Rect,DT_RIGHT);
        end;
      end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:42 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz