AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Checkbox in Stringgrid

Ein Thema von sephraina · begonnen am 9. Jun 2015 · letzter Beitrag vom 9. Jun 2015
Antwort Antwort
sephraina

Registriert seit: 17. Feb 2015
36 Beiträge
 
Delphi XE7 Professional
 
#1

Checkbox in Stringgrid

  Alt 9. Jun 2015, 11:27
Hallo Zusammen,

ich weiss zu diesem Thema gibts schon einiges, aber ich hab da was aus dem Internet ausporbiert, das bei mir nicht so funktioniert wie es sollte. Vielleicht sieht jemand gleich den Fehler... (hoffentlich..)
Ich will eine Checkbox in jede Zeile in einer bestimmten Spalte einfügen in einem Stringgrid.
Diesen Code habe ich +/- aus: http://borland.newsgroups.archived.a...803046227.html übernommen.

Delphi-Quellcode:
procedure TForm2.InseretCheckBoxes(var Stringgrid1: TStringGrid);

var
    ChkBox : TCheckBox;
    i : Integer;
begin
  with Stringgrid1 do
    begin
      for i := 1 to 3 do //einfach ein paar Zeilen
        begin
          Cells[5, i] := EmptyStr;
          ChkBox := TCheckBox.Create(Stringgrid1);
          with ChkBox do
            begin
              //Name := Format('ChkBox_%d_%d', [3, i]);
              //Caption := EmptyStr;
              Checked := False;
              Visible := True;
              Parent := Stringgrid1;
              Width := Height;
          end;

          Objects[5,i] := ChkBox;
        end;
    end;
end;
ok, es erscheint noch nichts auf meinem Stringgrid.
Dann fülle ich das Grid mit Daten und rufe am Ende noch diese Prozedur auf (Form2.InsertCheckboxes).
Endlich sehe ich eine Checkbox, leider aber nur im oberen linken Feld meines Stringgrids und nicht in der Spalte wo ich die chboxes wollte...

Hat jemand eine Idee woran das liegt?

Gruss und Danke

sephraina
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#2

AW: Checkbox in Stringgrid

  Alt 9. Jun 2015, 11:49
du musst der CheckBox auch sagen wohin sie platziert werden soll.

lies mich!
  Mit Zitat antworten Zitat
sephraina

Registriert seit: 17. Feb 2015
36 Beiträge
 
Delphi XE7 Professional
 
#3

AW: Checkbox in Stringgrid

  Alt 9. Jun 2015, 13:15
Hallo,

danke für die schnelle Antwort.
Ja diesen Beitrag habe ich schon gesehen... Ich will aber die Checkbox nicht so umständlich draufzeichnen...
Geht das nicht einfacher?
Irgendwie muss ich doch nur noch der Checkbox sagen wo sie hin soll.
Normalerweise (also bei einem String) verwende ich dafür :
stringgrid1.Cells[5,i]:= 'mein String'; und so kann man ja auch auslesen ob checked := true; ist.
Da die Checkbox ja ein Objekt ist, geht das nicht so einfach... oder doch?
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#4

AW: Checkbox in Stringgrid

  Alt 9. Jun 2015, 15:06
Ich würde mir eine neue Checkbox ableiten, wo ich dann auch col / row hinterlegen kann.
Delphi-Quellcode:
type
  TInlineCheckBox=class(TCheckBox)
  public
    Grid: TStringGrid;
    Col: Integer;
    Row: Integer;
  end;
Im OnClick kann man dann mit
Delphi-Quellcode:
TInlineCheckBox(Sender).Col
TInlineCheckBox(Sender).Row
gleich ermitteln, welche Zelle in welchem Grid (wenn man dann mehrere hätte) angeklickt wurde
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

AW: Checkbox in Stringgrid

  Alt 9. Jun 2015, 15:46
Was ist denn in dem verlinkten Beitrag zumindest von mir zu umständlich ? Das sind ganze ca. 10 Zeilen Du verstehst wahrscheinlich den Trick nicht, der hinter meinem Beispiel steckt : in der Stringgrid-Zelle, die eventuell eine gecheckte oder ungecheckte Checkbox enthalten soll, da steht in Wahrheit eine Zahl drin, z.B. 0 oder 1. Abhängig von diesem Stringgrid Zelleninhalt wird dann dieser im Ondrawcell ausgewertet und eben die Checkbox gezeichnet oder auch gechecked oder eben nicht. Deshalb braucht man da 3 Werte. Bei mir 0,1,2. Für unsichtbar, sichtbar aber unchecked und sichtbar und checked.

Vielleicht hätte ich in dem alten Beitrag noch den Prozedur-Kopf angeben sollen. Der sieht so aus :

Delphi-Quellcode:
procedure Tfrm.sgArtNrDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
const IsChecked : array[Boolean] of Integer =
      (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED);
var sgSender : TStringGrid;
Es geht also lediglich darum, die entsprechenden Stringgrid-Zellen mit 0,1 oder 2 zu bestücken und sich das OnDrawCell zurechtzubauen. Im konkreten Fall hier musst du den Kopf hier verwenden, wegen der Konstantendeklaration und aus dem alten Beitrag den Code. Und fertig.
Gruß
Hansa
  Mit Zitat antworten Zitat
sephraina

Registriert seit: 17. Feb 2015
36 Beiträge
 
Delphi XE7 Professional
 
#6

AW: Checkbox in Stringgrid

  Alt 9. Jun 2015, 17:36
Hallo,

danke für alle Antworten.
@ Hansa: Habe mir heute Nachmittag den Beitrag nochmals angesehen und mich dann teilweise an den Code des "Hobby Programmierers" gehalten.
So funktionierts recht ordentlich.

Gruss und Danke.

Sephraina
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 09:30 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