![]() |
Variablenübergabe - ich verzweifle
hallo,
ich bin langsam am ende :wall: . Die Übergabe eine Listbox variable klappt einfach nicht von einer Unit zu einer anderen. Ich habe viel gelesen über public und private, alles ausprobiert, die Variable wird einfach nicht übergeben. Was mach ich nur falsch. In der Sub Unit kommt einfach nix an. Hilfe :bounce2:
Delphi-Quellcode:
unit Main;
interface uses Sub, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm3 = class(TForm) Button1: TButton; listboxm:TListBox; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var FormMain: TForm3; implementation {$R *.dfm} procedure TForm3.Button1Click(Sender: TObject); begin listboxm.AddItem('Test',TObject(-1)); sub.testen:=listboxm; FormSub.showmodal; end; end. unit Sub; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm5 = class(TForm) ListBoxSub: TListBox; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var FormSub: TForm5; testen:TListBox; implementation {$R *.dfm} procedure TForm5.Button1Click(Sender: TObject); begin ListBoxSub:=testen; listboxsub.Refresh; listboxsub.Repaint; end; end. |
Re: Variablenübergabe - ich verzweifle
dein ButtonClick in der SubUnit müsste so aussehen:
Delphi-Quellcode:
edit:: ahh ich verstehe^^
procedure TForm5.Button1Click(Sender: TObject);
begin testen.Refresh; testen.Repaint; end; versuchs so:
Delphi-Quellcode:
procedure TForm5.Button1Click(Sender: TObject);
begin listboxsub.Items.Assign(testen.Items); end; |
Re: Variablenübergabe - ich verzweifle
da kommt die fehlermeldung list index out of bounds
|
Re: Variablenübergabe - ich verzweifle
Zitat:
|
Re: Variablenübergabe - ich verzweifle
geht auch nicht. ich denke aber dass ich das Problem eingrenzen kann.
Das Problem liegt an der List Box. die Übergabe mit listbox1:=listbox2 klappt irgendwie nicht. Die Übergabe einer einfachen Stringvaribalen klappt gut. Hier der Code für den den es interessiert:
Delphi-Quellcode:
und die sub
unit Main;
interface uses Sub, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm3 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var FormMain: TForm3; implementation {$R *.dfm} procedure TForm3.Button1Click(Sender: TObject); begin sub.test_str:='ich schreibe aus Main'; FormSub.showmodal; end; end.
Delphi-Quellcode:
Ich schliesse diesen Threat da das Übergabe Problem gelöst ist.
unit Sub;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm5 = class(TForm) Memo1: TMemo; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var FormSub: TForm5; test_str:string; implementation {$R *.dfm} procedure TForm5.Button1Click(Sender: TObject); begin memo1.Text:=test_str; end; end. Ich öffnen eine neuen Threat mit dem eigentlichen Problem. :arrow: :arrow: |
Re: Variablenübergabe - ich verzweifle
Delphi-Quellcode:
damit weist Du der Listbox1 die Adressen der Listbox2 zu.
listbox1:=listbox2
und nicht deren Inhalt.
Delphi-Quellcode:
<- das geht nicht
listbox1.assign(listbox2):
Delphi-Quellcode:
so sollte es das machen was Du willst.
listbox1.items.Assign(Listbox2.items);
Grüße Klaus |
Re: Variablenübergabe - ich verzweifle
Vielleicht sollte man noch erwähnen, das eine Listbox immer nur auf einer(!) Form liegen kann. Der INHALT jedoch kann von einer Listbox in eine andere Listbox kopiert werden.
|
Re: Variablenübergabe - ich verzweifle
Hallo Klaus01,
ich denke hiermit
Delphi-Quellcode:
hast du vollkommen Recht. Dies funktioniert.
listbox1.items.Assign(Listbox2.items);
Ich hab dies aber nicht hinbekommen wenn listbox1 in unit1 und listbox2 in unit2 liegt. |
Re: Variablenübergabe - ich verzweifle
Versuch es mal mit
Delphi-Quellcode:
listbox1.items.Assign(Form2.Listbox2.items);
|
Re: Variablenübergabe - ich verzweifle
Hi,
ich würde einen anderen Weg wählen. Definiere die Dinge, die Du übergeben willst, als property der Subform. Erstelle diese Form dann zur Laufzeit, übergebe Deine Variablen und rufe die Form per ShowModal auf. |
Re: Variablenübergabe - ich verzweifle
Hallo MuhKuh
könntest du vielleicht an einem simplen Beispiel zeigen wie das geht? :roll: |
Re: Variablenübergabe - ich verzweifle
Hi,
ist mal aus dem Kopf getippt:
Delphi-Quellcode:
unit Main;
interface uses Sub, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm3 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var FormMain: TForm3; implementation {$R *.dfm} procedure TForm3.Button1Click(Sender: TObject); begin with TForm5.Create(Application) do begin try MemoText := 'Das ist ein Test'; ShowModal; finally Free; end; end; end; end.
Delphi-Quellcode:
unit Sub;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm5 = class(TForm) Memo1: TMemo; private { Private declarations } function GetMemoText: String; procedure SetMemoText(const Value: String); public property MemoText: String read GetMemoText write SetMemoText; end; implementation {$R *.dfm} function TForm5.GetMemoText: String; begin Result := Memo1.Text; end; procedure TForm5.SetMemoText(const Value: String); begin Memo1.Text := Value; end; end. |
Re: Variablenübergabe - ich verzweifle
vielen dank fuer die Antwort. Ich werde es gleich mal ausprobieren und mich dann nochmal melden.
:stupid: |
DP-Maintenance
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
Delphi-Frage |
Re: Variablenübergabe - ich verzweifle
Hi Muh Kuh,
jepp es klappt :bounce2: vielen Merci. Manche einfach erscheinende Dinge kosten oft viel Schweiss. Ich habe die Sache jetzt mal für den "Transfer" von ListBoxen umgebogen. Vielen Dank.
Delphi-Quellcode:
unit Main;
interface uses Sub, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm3 = class(TForm) Button1: TButton; ListBoxMain: TListBox; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var FormMain: TForm3; implementation {$R *.dfm} procedure TForm3.Button1Click(Sender: TObject); var i: integer; begin with TForm5.Create(Application) do begin try ListBoxMain.Items[0]:='erster eintrag'; ListBoxMain.Items[1]:='zweiter eintrag'; ListBoxMain.Items[2]:='noch ein eintrag'; listboxtrans:=listboxmain; ShowModal; finally Free; end; end; end; end.
Delphi-Quellcode:
unit Sub;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm5 = class(TForm) ListBox1: TListBox; private function GetListBox(): Tlistbox; procedure SetListBox(const Value: TListBox); public property ListBoxTrans: TListBox read GetListBox write SetListBox; end; var FormSub: TForm5; implementation {$R *.dfm} function TForm5.GetListBox: TListBox; begin GetListBox:= listbox1; end; procedure TForm5.SetListBox(const Value: TListBox); var i:integer; begin for i := 0 to value.Count - 1 do ListBox1.Items[i]:=value.Items[i]; end; end. |
Re: Variablenübergabe - ich verzweifle
Ich denke, dies:
Delphi-Quellcode:
kann man durch das:
procedure TForm5.SetListBox(const Value: TListBox);
var i:integer; begin for i := 0 to value.Count - 1 do ListBox1.Items[i]:=value.Items[i]; end;
Delphi-Quellcode:
ersetzen.
procedure TForm5.SetListBox(const Value: TListBox);
begin Listbox1.items.assign(Value.items); end; Grüße Klaus |
Re: Variablenübergabe - ich verzweifle
Danke Klaus
Delphi-Quellcode:
geht auch. Das hatte ich schonmal probiert, hat aber wegen eines anderen Fehlers nicht gefunzt.
ListboxFields.items.assign(Value.items);
Merci :corky: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:16 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 by Thomas Breitkreuz