Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Per Befehl Checkbox erstellen (https://www.delphipraxis.net/108660-per-befehl-checkbox-erstellen.html)

STS301 17. Feb 2008 12:50


Per Befehl Checkbox erstellen
 
hi

wie kann ich per Befehl zb. eine Checkbox erstellen.

dominikkv 17. Feb 2008 12:54

Re: Per Befehl Checkbox erstellen
 
Delphi-Quellcode:
with TCheckBox.Create(self) do
  begin
    Parent := self;
    Top := 10;
    Left := 10;
    Height := 10;
    Width := 10;
  end;

STS301 17. Feb 2008 13:04

Re: Per Befehl Checkbox erstellen
 
danke

und wie kann ich dann etwas in die neue Checkbox eingeben, ohne eine editbox?

Noobinator 17. Feb 2008 13:05

Re: Per Befehl Checkbox erstellen
 
Dabei würde ich aber mindestens noch einen Namen setzen, damit man auf diese zugreifen kann.

Delphi-Quellcode:
with TCheckBox.Create(self) do
  begin
    Parent := self;
    Top := 10;
    Left := 10;
    Height := 10;
    Width := 10;
    name := 'mybox';
  end;

//Beispielzugriff per findcomponent.
...
Tcheckbox(findcomponent('mybox')).checked := not Tcheckbox(findcomponent('mybox')).checked;
...
wenn nicht sogar:

Delphi-Quellcode:
var mybox:Tcheckbox;

mybox := Tcheckbox.create(self);
with mybox do
  begin
    Parent := self;
    Top := 10;
    Left := 10;
    Height := 10;
    Width := 10;
    name := 'mybox';
  end;

STS301 17. Feb 2008 13:17

Re: Per Befehl Checkbox erstellen
 
ja schon, aber wie kann ich extern, nicht im Source die Caption ändern.

und wie kann ich wie schon eine Checkbox erstellt habe und danach noch eine erstellen will
kann das dann so funktionieren?
Delphi-Quellcode:
var mybox of Tcheckbox

mybox := Tcheckbox.create(self);
with mybox do
  begin
    Parent := self;
    Top := 10;
    Left := 10;
    Height := 10;
    Width := 10;
    name := 'mybox';
  end;

if mybox.exists then
 ...//checkbox erstellen?

busybyte 17. Feb 2008 13:33

Re: Per Befehl Checkbox erstellen
 
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;



  Type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
  mycb:Array of TCheckbox;
  procedure mycbClick(Sender: TObject);
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

Procedure freeall;
Var L1,cnt1:integer;
begin
L1:=Length(Form1.mycb);
for cnt1 := 0 to L1 - 1 do
freeandnil(Form1.mycb[cnt1]);
end;

Procedure TForm1.mycbclick(Sender: TObject);
begin
 with TCheckbox(Sender) do
  begin
  showmessage(Name+' Clicked!');
   if checked then caption:='checked'
   else caption:='unchecked';
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
Var L1:integer;
begin
L1:=Length(mycb);
Setlength(mycb,L1+1);

mycb[L1]:=TCheckbox.create(Form1);
try
 with mycb[L1] do
  begin
  Parent:=Form1;
  Caption:='MyCheckbox';
  Left:=10;
  Top:=L1*30+10;
  Name:='MyCb'+inttostr(L1+1);
  OnClick:=mycbClick;
  end;
except freeall; end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
freeall;
end;

end.

Noobinator 17. Feb 2008 13:38

Re: Per Befehl Checkbox erstellen
 
Du kannst den Namen im Objektinspektor ganricht ändern, denn die Checkbox existiert noch garnicht vor Programmstart.

wie du mehrere Erstellen kannst?

ganz einfach:

entweder du legst dir ein Array an, mit allen Checkboxen.
Oder du gehst über den Namen und lässt einen Integer mitlaufen.

1.weg:

Delphi-Quellcode:
var Mycheckboxes: array of Tcheckbox;

//im Formcreate dann ganz am Anfang Arraylänge auf 0 setzen
Setlength(mycheckboxes,0);
...
//Checkbox erstellen /z.B. per Buttonklick:

setlength(mycheckboxes,length(mycheckboxes ) + 1); //neues Element hinten an unser Array
mycheckboxes[high(mycheckboxes)]:= Tcheckbox.create(self); //in das neue Element eine Checkbox setzen

//checkbox initialisieren
with mycheckboxes[high(mycheckboxes)] do
begin
    Parent := self;
    Top := 10* length(mycheckboxes); // damit nicht alle übereinanderliegen
    Left := 10;
    Height := 10;
    Width := 100; // hier 100 oder mehr angeben, damit dein Text auch angezeigt wird
    Caption := 'Checkbox' + intttostr(length(mycheckboxes));
end;
// Zugriff ist hier ein ganz normaler Arrayzugriff:
mycheckboxes[0].checked := false; //1. Box auf false setzen zum Beispiel
2. Weg:

Delphi-Quellcode:
var boxcount:integer;
// IM Formcreate:
Boxcount := 0;

// Erstellen z.B. per Buttonklick
inc(Boxcount,1); // 1 Hochzählen

with mTcheckbox.create(self) do
begin
    Parent := self;
    Top := 10 * boxcount;
    Left := 10;
    Height := 10;
    Width := 100;
    Caption := 'Checkbox' + intttostr(boxcount);
    Name := 'Checkbox' + intttostr(boxcount);
end;

//Zugriff hier per findcomponent
Tcheckbox(findcomponent('Checkbox1')).checked := not Tcheckbox(findcomponent('checkbox1')).checked;

dominikkv 17. Feb 2008 13:41

Re: Per Befehl Checkbox erstellen
 
"extern", also "nicht im Source" wird das wohl kaum gehen... wie denn auch? Du erstellst die Checkbox erst zur Laufzeit, sie ist also erst zur Laufzeit verfügbar (also nix mit OI). Da eine Checkbox keine Methoden zur änderung der Caption mitbringt (wie zB ein Edit/Memo) kannst du die Caption also auch nur über den Quellcode ändern.

Dafür bieten sich verschiedene Möglichkeiten an:
:arrow: Du hast einen Zeiger auf das erstellte Objekt:
Delphi-Quellcode:
var MeineCheckBox: TCheckBox;
{...}
MeineCheckBox := TCheckBox.Create(self);
with MeineCheckBox do
  begin
    Parent := self;
    Top := 10;
    Left := 10;
    Height := 10;
    Width := 10;
  end;
// Jetzt zeigt MeineCheckBox auf die eben erstellte Checkbox
MeineCheckBox := TCheckBox.Create(self);
with MeineCheckBox do
  begin
    Parent := self;
    Top := 10;
    Left := 10;
    Height := 10;
    Width := 10;
  end;
// Und jetzt zeigt MeineCheckBox auf die 2. erstellte CheckBox
Ob MeineCheckBox auf eine CheckBox zeigt kannst du mit Assigned(MeineCheckbox) überprüfen. Aber achtung: damit das klappt mit FreeAndNil freigeben!
Wenn du mehrere Checkboxen dynamisch erstellen willst bietet sich hier ein Array oder eine ObjectList an.

:arrow: Du gibst der CheckBox einen Namen und wenn du darauf zugreifen willst suchst du nach diesem namen:
Delphi-Quellcode:
with TCheckBox.Create(self) do
  begin
    Parent := self;
    Top := 10;
    Left := 10;
    Height := 10;
    Width := 10;
    name := 'MeineCheckBox';
  end;
with (FindComponent('MeineCheckBox') as TCheckBox).Caption := 'bla';
:arrow: Du verwendest Nachrichten... SendMessage und so... Dazu brauchst du aber das Handle von der CheckBox... hab ich auch noch nie gemacht^^

STS301 17. Feb 2008 15:22

Re: Per Befehl Checkbox erstellen
 
Liste der Anhänge anzeigen (Anzahl: 1)
danke für die Antworten

ich wollte es eigentlich so machen, wie bei der GoogleDesktopToolbar die Aufgaben

bitsetter 17. Feb 2008 17:38

Re: Per Befehl Checkbox erstellen
 
Hi,

bei einem TListView kannst du die Eigenschaft CheckBoxes aktivieren, sowie den Eintrag ohne Code editieren.
Wäre eventuell besser geeignet als mehrere Checkboxen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 Uhr.
Seite 1 von 2  1 2      

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