Autor Beitrag
Darken
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 04.10.06 16:44 
hi,

ich hab nen dickes problem und habe auch schon im forum gesucht aber diesbezüglich nix gefunden also wollte ich mich persönlich an die community wenden. Ich bin noch net lange mit Delphi am werkeln... aber ich baue mir gerade nen kleines Prog. dabei geht es darum dass ich von form1. aus auf form 2 zugreifen möchte und sobald form2 aktiviert wurde läuft nen timer ab und dann starte der eine externe datei... soweit so gut das klappt auch alles... aber da ich mehrere buttons in form 1 habe und keine lust habe für jede button ne neue form zu machen die da dann erscheinen soll und dann die externe datei lädt( jeweils ne andere datei), dachte ich mir ich füge die variable 'erg' ein. also hab ich in form 1 geschrieben dass der form 2 öffnen soll und erg:= 1; ... dann füge ich bei form 2 ne simple if-Funktion ein mit 'if erg = 1 then'... so nun komm ich mal langsam zum problem... das funktioniert nämlcih net.. wenn ich in form ein für erg:= 1; angeben dann übernimmt form2 dies nicht für dessen variable erg.. kann ich das irgendwie machen, dass das funktioniert? um euch noch nen paar infos zu geben ... wenn ihr euch denkt was ist das denn für nen trottel, warum packt der sinnlos ne form dazwischen... in form 2 hab ich ne progressbar und das funktioniert auch alles prima.. nur um euch das problem leichter darzustellen hab ich das mit der progressbar net erwähnt..

vielen dank für eure hilfe
Marco D.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2750

Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
BeitragVerfasst: Mi 04.10.06 16:46 
Wie hast du 'erg' denn deklariert? ;)

_________________
Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
Darken Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 04.10.06 16:51 
nimm es mir net übel falsch ich jetzt falsch antworte... also ich hab var hingeschrieben erg:integer;
... hab erst seit nen paar wochen informatik und wir machen nur die spannenden turtlegrafiken ... ein hochgenuss des programmierens und darauf hab ich kein bock mehr und versuch halt mir selbst was beizubringen da ich schon html, css kann.. und auch schon vorher nen bissel ahnung von if-funktionen und for-schleifen hatte
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Mi 04.10.06 17:06 
Wir halten dich keines wegs für einen 'trottel' ;)
Deklarier deine Variable einfach über Implentation! Denn alles was unter Implentation folgt, ist nur Unit-Intern sichtbar! Also:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
var
  Form1: TForm1;
  global_erg: integer;  // deine globale variable
implementation


Gruß,
Marc
Darken Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 04.10.06 17:09 
danke.. brauch halt noch übung ist aber nachher umso besser wenn wir endlcih in der schule was anderes mal als turtle-grafik... richtig langweilig..
Darken Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 04.10.06 18:02 
hm kann es sein dass ich was falsch mache? ich hab das so wie du gesagt hast in der form1 und 2 deklariert aber das funzt trotzdem irgendwie net...
Timosch
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: Mi 04.10.06 18:10 
Poste am besten mal deinen Quelltext, dann lassen sich solche Probleme am leichtesten lösen.

_________________
If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Mi 04.10.06 18:16 
user profile iconDarken hat folgendes geschrieben:
hm kann es sein dass ich was falsch mache? ich hab das so wie du gesagt hast in der form1 und 2 deklariert aber das funzt trotzdem irgendwie net...


Warum denn in beiden Units? Du darfst deine Variable natürlich nur in einer Unit deklarieren!
Darken Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 04.10.06 18:21 
hier einmal unit1:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  GIFImage, Menus, Buttons;

type
  TForm1 = class(TForm)
    GIFImage2: TGIFImage;
    GIFImage1: TGIFImage;
    GIFImage3: TGIFImage;
    GIFImage4: TGIFImage;
    GIFImage5: TGIFImage;
    GIFImage6: TGIFImage;
    procedure FormCreate(Sender: TObject);
    procedure CreateParams(var Params:TCreateParams); override;

    procedure GIFImage3Click(Sender: TObject);
    procedure GIFImage4Click(Sender: TObject);
    procedure GIFImage5Click(Sender: TObject);
    procedure GIFImage6Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  global_erg:integer;
implementation

uses Unit2;
{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Brush.Style:=bsClear;
Form1.BorderStyle:=bsNone;
end;

procedure TForm1.CreateParams(var Params:TCreateParams);
Begin
 inherited CreateParams(Params);
 Params.ExStyle:=WS_EX_TRANSPARENT;
end;



procedure TForm1.GIFImage3Click(Sender: TObject);
begin
global_erg := 1;
Form2.Show;

end;

procedure TForm1.GIFImage4Click(Sender: TObject);
begin
form2.show;
global_erg := 2;
end;

procedure TForm1.GIFImage5Click(Sender: TObject);
begin
form2.show;
global_erg := 3;
end;

procedure TForm1.GIFImage6Click(Sender: TObject);
begin
form2.show;
global_erg := 4;
end;

end.


und hier unit 2

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  GIFImage, ComCtrls, ShellApi, ExtCtrls;

type
  TForm2 = class(TForm)
    GIFImage1: TGIFImage;
    Timer1: TTimer;
    ProgressBar1: TProgressBar;
    procedure FormActivate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;
  global_erg:integer;
implementation

{$R *.DFM}

procedure TForm2.FormActivate(Sender: TObject);
begin
progressbar1.visible := true;
timer1.Enabled := true;
progressbar1.Max := 15;
end;

procedure TForm2.Timer1Timer(Sender: TObject);
begin
if progressbar1.Position = progressbar1.Max then
 begin

  if global_erg = 1 then
  ShellExecute(Handle, 'open', 'C:\Programme\ICQLite\ICQLite.exe', '', Nil, sw_ShowNormal);
  progressbar1.visible:= false;
  progressbar1.position:= progressbar1.Min;
  timer1.Enabled:= false;
  form2.close;

  if global_erg = 2 then
  ShellExecute(Handle, 'open', 'C:\Programme\Mozilla Firefox\firefox.exe', '', Nil, sw_ShowNormal);
  progressbar1.visible:= false;
  progressbar1.position:= progressbar1.Min;
  timer1.Enabled:= false;
  form2.close;

 end else
 progressbar1.Position := progressbar1.Position + 1;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
progressbar1.Visible := false;
timer1.Enabled := false;
end;

end.
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Mi 04.10.06 18:27 
Wie bereits oben erwähnt, sollte dein Globale_Variable in nur einer Unit vorkommen, da bei gleichnamigen, unitübergreifenden Variablen, immer die Variable aus der entsprechenden Unit verwendet wird.
Zudem könntest du statt der 2 fachen if-abfrage in unit2 ein einfaches case-of verwenden:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
...
case global_erg of
  1:   ShellExecute(Handle, 'open', 'C:\Programme\ICQLite\ICQLite.exe', '', Nil, sw_ShowNormal);
  2:   ShellExecute(Handle, 'open', 'C:\Programme\Mozilla Firefox\firefox.exe', '', Nil, sw_ShowNormal);

  progressbar1.visible:= false;
  progressbar1.position:= progressbar1.Min;
  timer1.Enabled:= false;
 form2.close;
...
;)
Darken Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 04.10.06 18:42 
ich habe das in beide units deklariert weil sonst in unit2 nen fehler kommt und der sagt global_erg undefinierter bezeichner.. kann es sein dass das von delphi version abhängig ist? ich habe leider nur delphi2 von meinem infolehrer bekommen.. bei mir gingen schon so manche features net...z.b. wollte ich erst was mit transparent.color machen aber das gibts bei delphi 2 nicht
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Mi 04.10.06 18:57 
In der Unit 2 musst du auf global_erg mit den Formnamen der ersten Unit zugreifen:
ausblenden Delphi-Quelltext
1:
2:
case form1.global_erg of
...
Darken Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 04.10.06 19:07 
jetzt gehts endlich danke