Autor Beitrag
Luncustaf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 324

Win 2k
D7 Ent.
BeitragVerfasst: Sa 29.03.03 09:43 
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
  if einloggen_ip.Enabled then
  begin
    Einloggen.Height := 166;
    einloggen_ip.Enabled := False;
  end
  else begin
    Einloggen.Height := 226;
    einloggen_ip.Enabled := True;
  end;


hi,

das is mein problem - wenn ich den codedurchlaufe dann bringt er mir beim height immer ne access valuation :(

ich will damit nen bereich inner forum sichtbare machen und das auf butttonklick.


gr€€tz
AndyB
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: Sa 29.03.03 10:33 
Ist das Formular Einloggen auch schon erzeugt?

Wenn du innerhalb von OnCreate diesen Code anwendest, dann sind die auf das Formular folgenden Formulare noch nicht vorhanden.

_________________
Ist Zeit wirklich Geld?
Luncustaf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 324

Win 2k
D7 Ent.
BeitragVerfasst: Sa 29.03.03 10:46 
hi ja das formular is schon erzeugt


gr€€tz
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mo 31.03.03 10:43 
Wo genau steht denn der Code? Und was ist das einloggen genau für eine Form?

Achja, noch was anderes: Laut den Richtlinien ist "Vordrängeln" oder Pushen nicht erlaubt, habe deshalb Deine beiden Postings gelöscht...
Luncustaf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 324

Win 2k
D7 Ent.
BeitragVerfasst: Mo 31.03.03 12:24 
hi,

sorry das mit dem pushe nhabsch net gewusst kommt net mehr vor.

das formular wird zum einloggen in das programm benutzt.

es wird zur laufzeit erzeugt und sichtbar gemacht.

wenn dann auf ein button gedrücktw ird soll ein bereich des formulars eingebelendetwerden wo man in ein editfeld was eingeben kann.

das komisch ist es ist zb auch der einloggen b utton auf dem formular und wenn ich den klicke dann istalels ok.

kann ich die heigt werte nicht ändern wenn ich das formular zur laufzeit erzeuge?

gr€€tz
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Mo 31.03.03 12:29 
Luncustaf hat folgendes geschrieben:
sorry das mit dem pushe nhabsch net gewusst kommt net mehr vor.


Kein Problem, deswegen gibts ja die Mods ;-)

Also zurück zu Deinem Problem:
Ich bin mir nicht ganz sicher, aber es kommt glaub ich darauf an, wie Du das Formular erzeugst, wer der Parent ist. Je nachdem hast Du Zugriff auf die Eigenschaften. Korrigiert mich bitte, wenn ich was falsches sage.

Bei so einem Problem hab ichs dann so gemacht, dass ich eine Prozedur in der anderen Unit eingebaut habe, die das macht, der ich einfach den Wert übergeben hab, wie das Form aussehen soll.
Luncustaf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 324

Win 2k
D7 Ent.
BeitragVerfasst: Mo 31.03.03 12:38 
also das formular hat kein parent vllt sollte ich nachdem create nen Einloggen.paren(self)

machen?

werde ich zuhause mal probieren auf die eigenschaften habe ich zugriff denke ich zumindestens :D


gr€€tz
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Mo 31.03.03 15:09 
Hi,

wenn überhaupt würde ich beim Create() und als Parent "nil" angeben.. ;)

Denn wenn du dort ein "self" machst, wird das neue Form IN deinem aktuellen Form angezeigt..

Aber ich denke mal der Fehler liegt daran das du keinen Parent gemacht hast, wenn nicht... benutzt du vieleicht den Event "OnResize"??

Au'revoir,
Aya~

_________________
Aya
I aim for my endless dreams and I know they will come true!
Luncustaf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 324

Win 2k
D7 Ent.
BeitragVerfasst: Mo 31.03.03 17:26 
so nun genaueren code da es mit dem parent auch net geht :(

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
  Application.Initialize;
  Application.CreateForm(Tuebersicht, uebersicht);
  Application.CreateForm(Tinfo, info);
  Application.CreateForm(Tboard, board);
  Application.CreateForm(Tueber_setup, ueber_setup);
  if einloggen.Login then
      if db_laden.dbladen then
  Application.Run;


so rufe ich die funktion zum erzeugen auf tipp hab ich von tino

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
function TEinloggen.Login : Boolean;
var Form : TEinloggen;
begin
  Login := False;
  Form := TEinloggen.Create(nil);
  Form.Parent := self;
  if Form.ShowModal = mrOk then
    Login := true;
    Form.Free;
end;


das ist dann die funktion

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TEinloggen.Button1Click(Sender: TObject);
begin
  if einloggen_ip.Enabled then
  begin
    einloggen.Height := 166;
    einloggen_ip.Enabled := False;
    einloggen_ip.Text := 'Manuelle Ip_Eingabe >>';
  end
  else begin
    einloggen.Height := 226;
    einloggen_ip.Enabled := True;
    einloggen_ip.Text := 'Manuelle Ip_Eingabe <<';
  end;
end;


das ist der button mit dem ich die form erweiterung machen will.


gr€€tz
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Di 01.04.03 08:35 
Hallo,

ich habe mehrere Dinge entdeckt die nicht so gut oder einfach falsch sind.

Du machst folgenden Aufruf:
ausblenden Quelltext
1:
2:
  if einloggen.Login then 
      if db_laden.dbladen then

Die Variable einloggen wurde doch noch gar nicht initialisiert, oder? Also kannst Du den Aufruf vergessen.

Du hast zwar gesagt der Tipp kommt von mir aber so richtig glaube ich das nicht :-) Ich denke ich habe es wie folgt vorgeschlagen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
function Login : Boolean; 
var 
  Form : TEinloggen; 
begin 
  Form := TEinloggen.Create (nil); 
  Form.Parent := self; 
  Login := Form.ShowModal = mrOk;
  Form.Free; 
end;

Wichtig hierbei ist das die Funktion Login nicht eine Methode von TEinloggen ist. Also einfach außerhalb der Form-Deklaration (aber in der gleichen Unit) deklarieren.

Dann die Methode Button1Click. Ich gehe immer noch davon aus das einloggen eine Variable vom Type TEinloggen ist. Da Du aber diese Variable, wie oben schon geschrieben, nicht initialisiert hast geht zum Beispiel auch der folgende Aufruf nicht:
ausblenden Quelltext
1:
2:
3:
{...}
  einloggen.Height := 166;
{...}

Du willst doch die Höhe des Fenster ändern, oder? Wenn ja, dann kannst Du einfach schreiben:
ausblenden Quelltext
1:
Height := 166;					

und fertig.

Ich hoffe die Angaben helfen Dir ein weinig.

Gruß
Tino
Luncustaf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 324

Win 2k
D7 Ent.
BeitragVerfasst: Di 01.04.03 10:04 
Hi,

das einloggen ist der formular name den ich im objektinspektor dem formular gegeben habe.


ich kann das hier gerade nicht testen werde ich heute abend zuhause mal machen.

werde dan nbescheid geben ob es funktioniert hat.

ne andere frage ich muss die funktion ja irgendwo deklarieren soll ich diese dann in ein anderes formulardas ich davor erzeuge reinpacken und diese dann quasi aufrufen?

gr€€tz
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Di 01.04.03 10:14 
Tino hat folgendes geschrieben:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
function Login : Boolean; 
var 
  Form : TEinloggen; 
begin 
  Form := TEinloggen.Create (nil); 
  Form.Parent := self; 
  Login := Form.ShowModal = mrOk;
  Form.Free; 
end;

Wichtig hierbei ist das die Funktion Login nicht eine Methode von TEinloggen ist. Also einfach außerhalb der Form-Deklaration (aber in der gleichen Unit) deklarieren.

Der Code wird aber auch nicht funktionieren, da Login eine Funktion und keine Methode ist und die Referenz Self daher nicht existiert.

Ich würd das ganze aber sowieso anders machen, nämlich über eine Klassenmethode:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
type
  TEinloggen = class(TForm)
    {...}
    public
      class function Login: Boolean;
  end;

class function TEinloggen.Login: Boolean;
var
  aForm: TEinloggen;
begin
  aForm := TEinloggen.Create(nil);
  try
    try
      Result := aForm.ShowModal = mrOK;
    except
      Result := False;
    end;
  finally
    aForm.Free;
  end;
end;


Und aufrufen kann man das ganze dann (auch ohne Instanz) einfach so:
ausblenden Quelltext
1:
TEinloggen.Login					

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Di 01.04.03 10:17 
Hallo,

Luncustaf hat folgendes geschrieben:
das einloggen ist der formular name den ich im objektinspektor dem formular gegeben habe.

Das habe ich mir gedacht. Letztendlich ist es aber eine globale Variable die Delphi automatisch erstellt:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
type
  Teinloggen = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  einloggen: Teinloggen;

Da Du Dieses Fenster selbst erstellst und anzeigen lässt kannst Du die Variable entfernen da Du sie ja nicht mehr brauchst.
Luncustaf hat folgendes geschrieben:
ne andere frage ich muss die funktion ja irgendwo deklarieren soll ich diese dann in ein anderes formulardas ich davor erzeuge reinpacken und diese dann quasi aufrufen?

Ich würde die Funktion Login in der Unit definieren in der auch das Form einloggen definiert ist:
ausblenden volle Höhe 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:
unit FormEinloggen;

interface

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

type
  Teinloggen = class(TForm)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

Function Login: Boolean;

implementation

{$R *.DFM}

Function Login: Boolean;
var 
  Form : TEinloggen; 
begin 
  Form := TEinloggen.Create (nil); 
  Form.Parent := self; 
  Login := Form.ShowModal = mrOk; 
  Form.Free; 
end;

{...}

end.

Gruß
Tino
Luncustaf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 324

Win 2k
D7 Ent.
BeitragVerfasst: Di 01.04.03 10:27 
hmm aber wenn ich das ausserhalb vom public oder privat teil mache wo ist das dann zugewiesen?


gr€€tz
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Di 01.04.03 10:36 
Ich habe eine normale Funktion erstellt die nichts mit einem Formular zu tun hat.

Aufgerufen wir die Funktion zum Beispiel so:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
  Application.Initialize; 
  Application.CreateForm(Tuebersicht, uebersicht); 
  Application.CreateForm(Tinfo, info); 
  Application.CreateForm(Tboard, board); 
  Application.CreateForm(Tueber_setup, ueber_setup); 
  if Login then 
      if db_laden.dbladen then 
  Application.Run;

Natürlich muss die Unit, in der die Funktion Login implementiert ist, in die Uses-Klausel eingefügt werden.

Gruß
Tino
Luncustaf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 324

Win 2k
D7 Ent.
BeitragVerfasst: Di 01.04.03 21:46 
ich danke euch vielmals echt habt mich wieder nen bisschen schlauer gemahct vielen dank nochmals!


gr€€tz