AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Checkboxen im cxGrid und ihre Events

Ein Thema von Windwalker · begonnen am 12. Mär 2009 · letzter Beitrag vom 12. Mär 2009
Antwort Antwort
Windwalker

Registriert seit: 9. Mär 2009
72 Beiträge
 
#1

Checkboxen im cxGrid und ihre Events

  Alt 12. Mär 2009, 13:35
Hallo!

Ich bin etwas verwirrt, über das Verhalten meiner Checkboxen in einer meiner Spalten meines TableViews.
Ich habe in einer Spalte Checkboxen. Es darf immer nur eine Checkbox gesetzt sein (also nur für eine Zeile des TableViews.

Wenn ich eine Checkbox abhake, dann wird überprüft, ob die Checkbox in einer anderen Zeile gesetzt ist.
In diesem Fall wird die vorher gesetzte Checkbox gelöscht (FALSE gesetzt).
Blöderweise kommt dann auch kein Haken in der *neuen* Zeile, also der neu angeklickten Checkbox.

Kann es sein, dass das Zurücksetzen der vorher gesetzen Checkbox wieder ein Event auslöst, welches einen erneuten Effekt auf die aktuelle Checkbox hat?
Ich rufe beim Klick auf die Checkboxen das "OnEditValueChanged" Event auf, und nicht das "OnChanged". Letzteres wird doch auch beim Ändern einer Checkbox aus dem Code heraus ausgelöst, bei erstem doch nicht, oder?

Danke für die Hilfe!
  Mit Zitat antworten Zitat
Windwalker

Registriert seit: 9. Mär 2009
72 Beiträge
 
#2

Re: Checkboxen im cxGrid und ihre Events

  Alt 12. Mär 2009, 14:36
Ich vermute, es hat etwas mit dem fehlenden Refresh zu tun.
Wenn ich den Focus mit den Cursor-Tasten verschiebe, erscheint das Häkchen....

Allerdings erzielt ein "Refresh" auf meinem DataController den Effekt leider nicht...
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Checkboxen im cxGrid und ihre Events

  Alt 12. Mär 2009, 14:45
Hi,

ich würde das Event Abhängen beim Setzen und dann wieder anhängen:

Delphi-Quellcode:
procedure TTestForm.ColumnPropertiesChange(Sender: TObject);
begin
  Column.OnChange := nil;
  try
    // Code zum Abhaken anderer gesetzter Checkboxen
  finally
    Column.OnChange := ColumnPropertiesChange;
  end;
end;
Oder hals ein Flag setzen - InProcess ...

Cu, Frank

[Edit]Wobei eigentlich nichts passieren dürfte, wenn du nur dann reagierst, wenn Checked auf True gesetzt wird.[/Edit]
Frank Reim
  Mit Zitat antworten Zitat
Windwalker

Registriert seit: 9. Mär 2009
72 Beiträge
 
#4

Re: Checkboxen im cxGrid und ihre Events

  Alt 12. Mär 2009, 18:36
Nach Recherchen und Überlegungen mit meinem Kollegen scheint das Problem mit der Art und Weise, wie ich mir in der Event-Prozedur die aktuelle Zeile ermittle zusammenhänge.

Im Moment mache ich das über "meinDBTableView.DataController.GetFocusedRowIndex ". Ich speichere ihn mir in einer Variable, kann sich an sich nicht ändern, dennoch habe ich ein merkwürdiges Programm verhalten:

Wenn ich in der dem OnEditValueChange-Event zugeordneten Prozedur eine in einer anderen Zeile/Zelle gelegene, vorher gecheckte Checkbox zurücksetzte, um dann die aktuelle Checkbox zu setzen, vertauschen sie (nach nicht erkennbarem Muster) Zeilen im TableView.

Kann das mit GetFocusedRowIndex zusammenhängen?

Ich habe alternativ probiert, die aktuelle Zeile des Views über das Send-Objekt in der Event-Prozedur auszulesen, denn dieses ist ja vom Typ "TcrCheckBox", jedoch kann ich dort keine Methode finden, die mir das liefert.

Ich hoffe, mir kann jemand helfen.
Danke!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:17 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