Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Variablenübergabe - ich verzweifle (https://www.delphipraxis.net/112333-variablenuebergabe-ich-verzweifle.html)

raena 18. Apr 2008 21:26


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.

dominikkv 18. Apr 2008 21:29

Re: Variablenübergabe - ich verzweifle
 
dein ButtonClick in der SubUnit müsste so aussehen:
Delphi-Quellcode:
procedure TForm5.Button1Click(Sender: TObject);
begin
  testen.Refresh;
  testen.Repaint;
end;
edit:: ahh ich verstehe^^
versuchs so:
Delphi-Quellcode:
procedure TForm5.Button1Click(Sender: TObject);
begin
  listboxsub.Items.Assign(testen.Items);
end;

raena 18. Apr 2008 21:35

Re: Variablenübergabe - ich verzweifle
 
da kommt die fehlermeldung list index out of bounds

MrKnogge 18. Apr 2008 22:56

Re: Variablenübergabe - ich verzweifle
 
Zitat:

Zitat von dominikkv
dein ButtonClick in der SubUnit müsste so aussehen:
Delphi-Quellcode:
procedure TForm5.Button1Click(Sender: TObject);
begin
  testen.Refresh;
  testen.Repaint;
end;

refresh ruft automatisch repaint auf.

raena 19. Apr 2008 10:47

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:
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.
und die sub
Delphi-Quellcode:
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 schliesse diesen Threat da das Übergabe Problem gelöst ist.
Ich öffnen eine neuen Threat mit dem eigentlichen Problem. :arrow: :arrow:

Klaus01 19. Apr 2008 11:02

Re: Variablenübergabe - ich verzweifle
 
Delphi-Quellcode:
listbox1:=listbox2
damit weist Du der Listbox1 die Adressen der Listbox2 zu.
und nicht deren Inhalt.

Delphi-Quellcode:
listbox1.assign(listbox2):
<- das geht nicht
Delphi-Quellcode:
listbox1.items.Assign(Listbox2.items);
so sollte es das machen was Du willst.
Grüße
Klaus

alzaimar 19. Apr 2008 11:08

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.

raena 19. Apr 2008 12:18

Re: Variablenübergabe - ich verzweifle
 
Hallo Klaus01,

ich denke hiermit
Delphi-Quellcode:
listbox1.items.Assign(Listbox2.items);
hast du vollkommen Recht. Dies funktioniert.

Ich hab dies aber nicht hinbekommen wenn listbox1 in unit1 und listbox2 in unit2 liegt.

DeddyH 19. Apr 2008 12:28

Re: Variablenübergabe - ich verzweifle
 
Versuch es mal mit
Delphi-Quellcode:
listbox1.items.Assign(Form2.Listbox2.items);

Die Muhkuh 19. Apr 2008 12:35

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.


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

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