Delphi-PRAXiS
Seite 2 von 2     12   

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 [erledigt] CheckBox in Stringgrid (https://www.delphipraxis.net/60831-%5Berledigt%5D-checkbox-stringgrid.html)

Helmutf 14. Mär 2006 12:47

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

Helmutf 16. Mär 2006 15:39

Re: [erledigt] CheckBox in Stringgrid
 
Lieber Hansa!

Dein Beispiel würde mich interessieren.
Hiezu würde ich jedoch noch obige Angaben benötigen.

Danke.

Hansa 16. Mär 2006 17:50

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:
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;
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.

Hansa 17. Mär 2006 21:16

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:
        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
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.

Helmutf 18. Mär 2006 12:07

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.
Seite 2 von 2     12   

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