Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Stringgrid OnCellChange ? (https://www.delphipraxis.net/179200-stringgrid-oncellchange.html)

Hansa 19. Feb 2014 18:18

Delphi-Version: 5

Stringgrid OnCellChange ?
 
Hallo,

ich bräuchte den Wert einer Stringgid-Zelle, bevor sie geändert wird und danach. Z.B. Zelle hat den Wert 5. Den ändere ich jetzt auf 7. Gut, den geänderten Wert habe ich ja direkt in der Zelle drin stehen, aber woher weiss ich jetzt, dass der vorher 5 war ? :shock: Weitere Frage ist dann noch : solange der User die zelle editiert braucht ja nichts gemacht zu werden, erst beim verlassen der Zelle. Da wäre jetzt so etwas in Richtung OnCellExit nützlich. Geht das mit dem normalen TStringgrid schon irgendwie, oder muss ich das nachrüsten ? Wenn ja wie am Besten ?

himitsu 19. Feb 2014 18:47

AW: Stringgrid OnCellChange ?
 
In OnEnter und OnSelectCell den "alten" Inhalt in einer Variable speichern (aka dein selbstgebautes OnCellEnter)

und im OnSelectCell, sowie im OnExit, kann kann der alte mit dem neuen Wert verglichen werden. (aka OnCellExit)



Eventuell noch OnRowMoved und OnColMoved auch mit als OnCellExit und danach als OnCellEnter beachten, falls Zeilen/Spalten verschoben werden dürfen.

Hansa 19. Feb 2014 19:37

AW: Stringgrid OnCellChange ?
 
Geht nicht, das Stringgrid wird ja nicht verlassen, noch "betreten". Deshalb scheiden OnEnter und OnExit des Grids aus.

Helmi 19. Feb 2014 20:20

AW: Stringgrid OnCellChange ?
 
Hallo,

du könntest OnSelectCell nutzen, was ausgelöst wird, bevor die Zelle ausgewählt wird. (laut Hilfe)
So könntest du deinen alten Wert erhalten

Habs getestet - bevor man einen Wert in der Zelle ändern kann, wird OnSelectCell ausgelöst und spuckt noch
den alten Wert der Zelle aus

Volker Z. 19. Feb 2014 20:29

AW: Stringgrid OnCellChange ?
 
Hallo,

Zitat:

ich bräuchte den Wert einer Stringgid-Zelle, bevor sie geändert wird und danach [...] Weitere Frage ist dann noch : solange der User die zelle editiert braucht ja nichts gemacht zu werden [...]
Bevor der Inplace-Editor in der Zelle angezeigt wird, wird OnGetEditText ausgelöst (falls zugewiesen). Im Parameter Value wird der aktuelle Zelleninhalt geliefert.

Gruß

Helmi 19. Feb 2014 20:32

AW: Stringgrid OnCellChange ?
 
Zitat:

Zitat von Volker Z. (Beitrag 1248636)
Hallo,

Zitat:

ich bräuchte den Wert einer Stringgid-Zelle, bevor sie geändert wird und danach [...] Weitere Frage ist dann noch : solange der User die zelle editiert braucht ja nichts gemacht zu werden [...]
Bevor der Inplace-Editor in der Zelle angezeigt wird, wird OnGetEditText ausgelöst (falls zugewiesen). Im Parameter Value wird der aktuelle Zelleninhalt geliefert.

Gruß

Aber doch nur wenn es eine Maske gibt, oder?

Volker Z. 19. Feb 2014 20:40

AW: Stringgrid OnCellChange ?
 
Hallo,

OnGetEditText wird getriggert, wenn in Options das Flag goEditing gesetzt ist (laut TE kann der Anwender editieren). Hat mit der Mask nichts zu tun

Gruß

Sir Rufo 19. Feb 2014 21:59

AW: Stringgrid OnCellChange ?
 
Alleine mit den Events
Delphi-Quellcode:
GetEditText
und
Delphi-Quellcode:
SetEditText
kann man genau bestimmen, wann eine Zelle editiert wird und wann diese Bearbeitung abgeschlossen ist.

Die anderen Events sind dazu überflüssig.

Volker Z. 19. Feb 2014 22:50

AW: Stringgrid OnCellChange ?
 
Hallo,

Zitat:

Zitat von Sir Rufo (Beitrag 1248656)
Alleine mit den Events
Delphi-Quellcode:
GetEditText
und
Delphi-Quellcode:
SetEditText
kann man genau bestimmen, wann eine Zelle editiert wird und wann diese Bearbeitung abgeschlossen ist.

Mit
Delphi-Quellcode:
GetEditText
kann man genau bestimmen, wenn eine Zelle in den Editiermodus wechselt (das wird nur einmal getriggert, bevor der Inplace-Editor angezeigt wird),
Delphi-Quellcode:
SetEditText
hingegen wird bei jeder Änderung (bei jedem Tastenanschlag) und beim abschließenden Return, beim Klick auf eine andere Zelle etc. getriggert - also u. U. sehr häufig.

Zitat:

Zitat von Sir Rufo (Beitrag 1248656)
Die anderen Events sind dazu überflüssig.

Kann man so sehen - würde mich da tendenziell zwar anschließen - muss man aber nicht.

Zitat:

Zitat von Hansa (Beitrag 1248627)
ich bräuchte den Wert einer Stringgid-Zelle, bevor sie geändert wird [...]

Wie schon ausgeführt
Delphi-Quellcode:
GetEditText
und entsprechend merken

Zitat:

Zitat von Hansa (Beitrag 1248627)
[...] und danach [...]

das kann ein beliebiger Zeitpunkt irgendwo im Raum-Zeit-Kontinuum sein; welcher Event dann dafür am besten geeignet ist weiß vielleicht Zarkon :wink:.

Gruß

Hansa 19. Feb 2014 23:28

AW: Stringgrid OnCellChange ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Thx, scheint wirklich so in der Richtung zu gehen. Allerdings ist da noch eine Sache nicht so optimal. Ich muss ja die Differenz der bestimmten Zellen eventuell auswerten.
Zitat:

Zitat von Sir Rufo (Beitrag 1248656)
..wann eine Zelle editiert wird und wann diese Bearbeitung abgeschlossen ist...

Wo sollte man das denn am Besten machen ? Anbei Beispielprojektm falls jemand das mal testen will.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:38 Uhr.
Seite 1 von 2  1 2      

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