![]() |
Re: [erledigt] CheckBox in Stringgrid
Hallo,
ich versuche gerade eine CheckBox im Stringgrid zu simulieren. Ich kann das Beispiel aber nicht nachbauen (Delphi 5). Fehlermeldungen: 1) Undefinierter Bezeichner "IsChecked" 2) Bei DrawFrameControl: Inkompatible Typen: 'Cardinal' und 'TGridDrawState' Wo ist DrawRect und DrawState deklariert ? Wird die CheckBox 'sgCheckBox' (befindet sich auf Formular) auf hidden gesetzt ? Danke |
Re: [erledigt] CheckBox in Stringgrid
Lieber Hansa!
Dein Beispiel würde mich interessieren. Hiezu würde ich jedoch noch obige Angaben benötigen. Danke. |
Re: [erledigt] CheckBox in Stringgrid
Jo, das Beispiel ist wirklich zu mager. So ungefähr muß es aber aussehen. Das ist die Stelle, die bei Dir wohl Ärger macht :
Delphi-Quellcode:
Wenn das alleine nicht reicht, dann poste bitte den eigenen Quelltext. Die komplette Prozedur hat ca. 200 Zeilen und würde wohl nichts nützen, weil zu speziell. Außerdem ist es OOP-mäßig strukturiert, d.h. einige Eigenschaften sind eventuell bereits bei einem Vorfahren deklariert.
procedure Tfrm.sgDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); const IsChecked : array[Boolean] of Integer = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED); var DrawState: Integer; DrawRect: TRect; begin inherited; |
Re: [erledigt] CheckBox in Stringgrid
Stop, der Kopf ist zu wenig. Da gibts noch lästige Hürden. Hier ist das wichtige (aus OnDrawCell !) :
Delphi-Quellcode:
Damit dürfte das jetzt aber hinzukriegen sein. CheckBoxCols ist dabei ein eigenes SET OF byte um entscheiden zu können, um welche Spalten es geht (habe da einige). Und Achtung : das Beispiel zeigt so nur gecheckte Boxen an ! Außerdem muß noch das OnMouseClick ausgewertet werden, damit die DheckBox wie erwartet funktioniert.
if ACol in CheckBoxCols then begin
if StrToInt (sg.Cells [ACol,ARow]) = 1 then begin DrawRect:=Rect; InflateRect(DrawRect,-1,-1); DrawState := ISChecked[StrToInt (sg.Cells [ACol,ARow]) = 1]; // ^ die 0/1, die aus dem DB-Original in sg steht beeinflusst, ob die // CheckBox gecheckt ist ! D.h. sie wird im OnDrawCell je nach Wert gezeichnet ! sg.Canvas.FillRect(Rect); // hinter Cells liegende 0/1 nicht anz. DrawFrameControl(sgNr.Canvas.Handle,DrawRect,DFC_BUTTON,DrawState); end else begin // unchecked : Checkbox ausblenden DrawRect:=Rect; InflateRect(DrawRect,-1,-1); Canvas.FillRect(DrawRect); // unchecked-0 überdecken // canvas.TextOut(rect.Left,rect.bottom-canvas.Textheight('X')-1,' '); end; end |
Re: [erledigt] CheckBox in Stringgrid
Danke bisher.
Ich bin derzeit anderweitig beschäftigt. Komme noch mal darauf zurück und werde das Beispiel aufbauen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:03 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-2025 by Thomas Breitkreuz