Autor Beitrag
die_nadja
Hält's aus hier
Beiträge: 15

Win 98, Win XP

BeitragVerfasst: So 13.03.05 16:12 
hi

folgendes prob:
UFHaupt hat ein Formular1, uses UTLogin
UTLogIn hat ein Formular2

über UFHaupt möchte ich UTLogin aufrufen, das sein Formular2 ausführt, es beendet und dannach wieder zu UFHaupt und dem dazugehörigen Formular1 zurückkehrt. Allerdings klappt das alles nicht so ganz.

Hier die Hpt.Unit
ausblenden 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:
unit UFHaupt;

interface

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

type
  TFHaupt = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    login:TFLogIn;
  public

  end;

var
  FHaupt: TFHaupt;

implementation

{$R *.dfm}

procedure TFHaupt.FormCreate(Sender: TObject);
begin
if login.blabla='muh' then (....);
end;

end.


Und hier UtLogIn

ausblenden 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:
unit UTLogIn;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls, jpeg, shellapi,Inifiles;

type
  TFLogIn = class(TForm)
    
    procedure FormCreate(Sender: TObject);
    
  private
         function blabla:string;

  public

  end;

var
  FLogIn: TFLogIn;
  
implementation

function TFLogIn.blabla:string;
(...)

Also ich habe die UTLogIn vorher sepparat geschrieben und jetzt einfach nur beim Hpt.formular hinzugefügt..Daher auch der Fehler, aber wie mache ich das Mit Sender, Typ vereinbarung das es so klappt wie oben beschrieben??Habe bissl rumprobiert, leider keine lsg gefunden da ichd as mit dem ganzen vererben/klassen usw. nie richtig verstanden habe..Danke für Hilfe :)
Mike_C
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 207

Win XP
D7 Enterprise
BeitragVerfasst: So 13.03.05 16:21 
user profile icondie_nadja hat folgendes geschrieben:

Daher auch der Fehler, aber wie mache ich das Mit Sender, Typ vereinbarung das es so klappt wie oben beschrieben??


Welcher Feheler denn? Kannst du mal die Fehlermeldung posten?

_________________
Life is, what some people call a mystery. To me life's just a lesson, you're learning when you're through. So why do we try to understand?
die_nadja Threadstarter
Hält's aus hier
Beiträge: 15

Win 98, Win XP

BeitragVerfasst: So 13.03.05 16:26 
so in etwa

[Error] UFHaupt.pas(27): Undeclared identifier: 'blabla'
[Error] UFHaupt.pas(27): Record, object or class type required
[Fatal Error] Datenverwaltung.dpr(6): Could not compile used unit 'UFHaupt.pas'


..ich weiß wie man z.B. mehrere "Unterunits" mit der Hpt.Unit/Formular verbindet, aber das scheint hier nicht zu klappen weil ich auch ein 2. Formular habe. Die Funktion aus UTLogIN wird nicht in der Hpt.Unit erkannt.


Zuletzt bearbeitet von die_nadja am So 13.03.05 16:27, insgesamt 1-mal bearbeitet
Mike_C
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 207

Win XP
D7 Enterprise
BeitragVerfasst: So 13.03.05 16:26 
ich glaube, dass dein Problem daran liegt, dass du den LogIn im Konstruktor deiner Form aufrufen willst (bei FHaupt.FormCreate). Da FHaupt wohl vor FLogIn erstellt wird, kann FHaupt von FLogIn noch keine Funktionen aufrufen. Versuche mal deinen LogIn bei FHaupt.FormShow abzufragen.

Im Objektinspektor in den Event von FHaupt nach OnShow suchen und eine Funktion zuweisen.

Das sollte gehen

_________________
Life is, what some people call a mystery. To me life's just a lesson, you're learning when you're through. So why do we try to understand?
Mike_C
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 207

Win XP
D7 Enterprise
BeitragVerfasst: So 13.03.05 16:28 
Sorry, ich war zu schnell!

Dein Problem ist folgendes:

ausblenden Delphi-Quelltext
1:
2:
private
         function blabla:string;


du definierst hier eine Private Funktion! das heißt nur FLogIn kennt die Funktion blabla. mach die mal Public, also einfach
function blabla: string in den Abschnitt public kopieren!

_________________
Life is, what some people call a mystery. To me life's just a lesson, you're learning when you're through. So why do we try to understand?
die_nadja Threadstarter
Hält's aus hier
Beiträge: 15

Win 98, Win XP

BeitragVerfasst: So 13.03.05 16:43 
Danke, du hattest Recht!! private prozeduren sind lediglich innerhalb der unit zu gebrauchen gg

Eine Frage noch: Wie kann ich es erreichen, das beim start erst die login form angezeigt wird und nach dem erflogreichem abarbeiten die hpt.form zu sehen ist?? einfach form.show usw.. oder gibt es was besseres...Es wäre z.B. gut wenn nach dem UTLogIn abgearbeitet wurde erst die Hauptform erstellt wird (formcreate)...geht sowas??
Mike_C
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 207

Win XP
D7 Enterprise
BeitragVerfasst: So 13.03.05 17:13 
sicher geht sowas:

dazu musst du das .dpr-File ein wenig abändern


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
program LaberLaber;

uses
  Forms,
  ULogIn in 'ULogIn.pas' {TFLogIn},
  UHaupt in 'UHaupt.pas' {TFHaupt};

{$R *.res}

begin
  FLogIn := TFLogIn.Create(Application);
  FLogIn.ShowModal;
  fLogIn.Refresh;
  Application.CreateForm(TFHaupt, FHaupt);
  FLogIn.Hide;
  FLogIn.Free;
end.


ich glaube so ging das. probiers mal aus!

_________________
Life is, what some people call a mystery. To me life's just a lesson, you're learning when you're through. So why do we try to understand?
Mike_C
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 207

Win XP
D7 Enterprise
BeitragVerfasst: So 13.03.05 17:18 
wenn das nicht geht, versuch was anderes:

in den Projektoptionen kannst du bestimmen, welche Formen im DPR-File erstellt werden sollen. schmeiß da alles bis auf deinen LogIn-Form raus.

wenn dein LogIn dann erfolgreich war, kannst du die Hauptform erstellen

ausblenden Delphi-Quelltext
1:
2:
3:
FHaupt:=TFHaupt.Create(Application);
FHaupt.Show;
FLogIn.Hide;


dann ist die LogIn-Form die Hauptform und wenn du die Hauptform schließt, musst du auch noch die LogIn-Form schließen, damit die Anwendung beendet wird.

_________________
Life is, what some people call a mystery. To me life's just a lesson, you're learning when you're through. So why do we try to understand?
die_nadja Threadstarter
Hält's aus hier
Beiträge: 15

Win 98, Win XP

BeitragVerfasst: So 13.03.05 17:34 
ok danke...habs bissl umgeändert..funktioniert jetzt auch fast schon so wie ich es brauche, denke das kriege ich jetzt hin.. :)

mfg nadja

_________________
I think, therefore I am ...