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/)
-   -   Nue eine CheckBox wird gefunden ! (https://www.delphipraxis.net/187264-nue-eine-checkbox-wird-gefunden.html)

Captnemo 12. Nov 2015 18:15

AW: Nue eine CheckBox wird gefunden !
 
Man könnte das ganze natürlich auch in ein Array packen:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    btn1: TButton;
    mmo1: TMemo;
    procedure btn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    MyCheckBoxes: array [0..9] of TCheckBox;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
var
  I: Integer;
begin
  mmo1.Lines.Clear;
  for I := 0 to 9 do
    if MyCheckBoxes[i].Checked then
      mmo1.Lines.Add(Format('Checkbox %d ist checked', [i])) else
      mmo1.Lines.Add(Format('Checkbox %d ist nicht checked', [i]));
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  I: Integer;
begin
  for I := 0 to 9 do
  begin
    MyCheckBoxes[i]:=TCheckBox.Create(self);
    with MyCheckBoxes[i] do
    begin
      Parent:=self;
      Name:='Checkbox'+IntToStr(i);
      Caption:='CheckBox '+IntToStr(i);
      Left:=80;
      Width:=120;
      Top:=64 + (i * 24);
      Visible:=True;
    end;
  end;
end;

end.
Möglicherweise bietet sich für sowas auch eine CheckListBox an.

Sir Rufo 12. Nov 2015 18:56

AW: Nue eine CheckBox wird gefunden !
 
Liste der Anhänge anzeigen (Anzahl: 1)
Oder eben ohne dieses Zusammengebaue (s. Anhang Source + EXE zum Herumspielen)

Minibike 12. Nov 2015 19:27

AW: Nue eine CheckBox wird gefunden !
 
@Sir Rufu
Danke für die vielen Antworten, ich hoffe Du kannst mir noch öfter Helfen, und sorry , dass ich nicht wußte, wie man den Source anständig Postet,
aber jetzt weiß ich es ja.

@hoika
Deine Antwort : newCheckBox := TCheckBox.Create(Self);
Und fertig.
Du hast mich in Grund und Boden versenkt, Tagelang zerbrach ich mir den Kopf, unzählige Versionen Probiert, immer wieder bekamm ich von
Delphi eine Ohrfeige. Und jetzt siehe da, es können alle Checkboxen abgefragt werden, NUR DURCH EIN WORT >>> SELF <<<< warum auch immer, es geht.

Wie gesagt, ich hab mir Delphi selbst beigebracht, und verstehe deshalb nicht alles, und bin froh, das es dieses Forum gibt, Danke nochmal an alle.........
Und jetzt ab in die Nachtschicht von 22.00Uhr - 6.00Uhr.

Gruß Mike

Perlsau 12. Nov 2015 20:52

AW: Nue eine CheckBox wird gefunden !
 
Zitat:

Zitat von Minibike (Beitrag 1321359)
NUR DURCH EIN WORT >>> SELF <<<< warum auch immer, es geht.

Das ist eigentlich ganz einfach zu verstehen: Wenn du ein visuelles Objekt erstellst, muß der Compiler (bzw. das compilierte Programm) ja wissen, wo er das hinmalen soll – auf dein Formular oder auf ein Panel, das sich auf deinem Formular befindet oder wo sonst auch immer. Self ist die Variable, die das Formular bezeichnet. Wenn du also beim Create-Befehl Self als Owner (= Eigentümer) angibst, weiß der Compiler, daß das Objekt auf dem Formular gezeichnet werden soll. Die Eigenschaften Left und Top beziehen sich dann auf das Formular. Gibst du z.B. MeinPanel als Owner an, wird das Objekt auf dem Panel gezeichnet, das den Namen MeinPanel hat. Beim Suchen nach einem visuellen Objekt muß der Compiler ebenfalls wissen, wo er denn überhaupt suchen soll: Ist das ein Objekt der Form oder ein Objekt auf dem Panel oder gehört es zu irgend einer anderen visuellen Komponente?

Create ist der Konstruktor, der ein Objekt erzeugt. Verschiedene Objekte verfügen über unterschiedliche Konstruktoren. So muß z.B. nicht bei jedem Create der Owner angegeben werden, das beschränkt sich auf visuelle Objekte. Andere Objekte wie z.B. TStringList verlangen gar keine Angabe im Create-Befehl, wieder andere wie z.B. TFileStream erwarten einen Dateinamen und den Stream-Modus als Parameter im Create-Befehl.

Übrigens hab ich mir Delphi auch selbst beigebracht und kann ebenfalls kein Informatikstudium vorweisen. Soweit mir bekannt lernen auch Informatiker nicht wirklich eine Programmiersprache in ihren Vorlesungen, sondern müssen sich diese Kenntnisse ebenfalls selber beibringen. Man sollte sich da nicht "künstlich" selbst herabsetzen, nur weil man nicht studiert hat, denn das Verständnis für eine Programmiersprache verlangt zuallererst einmal eine gewisse Affinität zum Programmieren, und die wirst du wohl haben, sonst würdest du das gar nicht erst betreiben.

Als Einstieg und zum Erwerben von Basis-Kenntnissen und Erlernen der Objekt-Orientierung hat sich das Ebook vom Delphi-Treff bewährt.

Sir Rufo 12. Nov 2015 21:23

AW: Nue eine CheckBox wird gefunden !
 
Das mit dem
Delphi-Quellcode:
Self
lässt sehr leicht aufklären, wenn man weiß, dass Delphi in Methoden dieses
Delphi-Quellcode:
Self
in den Scope nimmt und dieses hier
Delphi-Quellcode:
If TCheckBox(FindComponent(Test)).Checked = true then
      ShowMessage('Ergebnis : True')
    ELSE
      ShowMessage('Ergebnis : False') ;
intern so
Delphi-Quellcode:
If TCheckBox( Self.FindComponent( Test ) ).Checked = true then
      ShowMessage('Ergebnis : True')
    ELSE
      ShowMessage('Ergebnis : False') ;
abgearbeitet wird ;)

Jetzt sollte man auch die Information aus der Dokumentation geistig zusammenführen können.

BadenPower 14. Nov 2015 17:30

AW: Nue eine CheckBox wird gefunden !
 
Zitat:

Zitat von Perlsau (Beitrag 1321364)
Self ist die Variable, die das Formular bezeichnet. Wenn du also beim Create-Befehl Self als Owner (= Eigentümer) angibst, weiß der Compiler, daß das Objekt auf dem Formular gezeichnet werden soll. Die Eigenschaften Left und Top beziehen sich dann auf das Formular. Gibst du z.B. MeinPanel als Owner an, wird das Objekt auf dem Panel gezeichnet, das den Namen MeinPanel hat.

Dass eine Komponente auf ihrem Owner gezeichnet wird, darauf würde ich mich nicht verlassen und würde es auch so niemals ausdrücken, denn gezeichnet wird die Komponente auf dem Parent und nicht auf dem Owner.

Natürlich können Owner und Parent gleich sein, aber eben nicht zwingend.

hoika 14. Nov 2015 19:26

AW: Nue eine CheckBox wird gefunden !
 
Hallo,
dann noch viel Erfolg beim Delphi-Lernen!
Solche Schüler haben wir hier gern:)

LG
Heiko

Perlsau 14. Nov 2015 19:27

AW: Nue eine CheckBox wird gefunden !
 
Wo du recht hast ... :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:13 Uhr.
Seite 2 von 2     12   

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