Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Server Problem (https://www.delphipraxis.net/166099-server-problem.html)

CallOfUnite 30. Jan 2012 13:22

Server Problem
 
Hallo Leute ich bin neu hier und habe mich wegen eines Problems hier registriert,

Ich bin eigentlich ein erfahrener Programmierer aber Delphi ist an sich etwas neues für mich,
ich bin gerade dabei eine Chat Applikation zu entwickeln und habe wollte jetzt eine Funktion einbauen
die einen Button auf einem Anderen Formular einer anderen Unit aktiviert, dieser Button ist von
Hause aus deaktiviert.

Bei einem Click auf Schliessen soll ein Formular geschlossen werden und auf dem anderen Formular ein
Button Enabled werden damit man dieses erste Formular wieder öffnen kann.
Hierbei erhalte ich jedoch die Fehlermeldung:
Zeile Code
123: TMain.BtServerErzeugen.Enabled := True;

-Fehler(123) : Methodenbezeichner erwartet.

haentschman 30. Jan 2012 13:24

AW: Server Problem
 
Herzlich willkommen hier :dp:

zeige doch mal ein wenig mehr von deinem Code... So müßten wir 100 Mal nachfragen.

DeddyH 30. Jan 2012 13:25

AW: Server Problem
 
Hallo und Willkommen in der DP :dp:,

bist Du sicher, dass TMain stimmt? Das klingt mir eher so, als sei das die Klasse und nicht die Instanz.

haentschman 30. Jan 2012 13:27

AW: Server Problem
 
Vermute ich auch... aber lieber sehen als raten... :thumb:

PS: erster :cheer:

CallOfUnite 30. Jan 2012 13:28

AW: Server Problem
 
Zitat:

Zitat von haentschman (Beitrag 1148272)
Herzlich willkommen hier :dp:

zeige doch mal ein wenig mehr von deinem Code... So müßten wir 100 Mal nachfragen.

Der Code ist geschätzte 100 km lang :D
ne jetzt mal im ernst das ist echt relativ viel...
Ich versuche mal das wichtigste rauszusuchen ...

haentschman 30. Jan 2012 13:29

AW: Server Problem
 
Zitat:

Ich versuche mal das wichtigste rauszusuchen ...
die Deklarationen reichen.

CallOfUnite 30. Jan 2012 13:31

AW: Server Problem
 
Die Prozedur des Schliessen Buttons von Form 2 ,


procedure TFrmServer.Button1Click(Sender: TObject);
begin
//hier soll sich dieses Formular schliessen
//Befehl (??)
TMain.BtServerErzeugen.Enabled := True;
end;

Die Prozedur die Formular 2 wieder öffnen soll,


procedure TMain.BtServerErzeugenClick(Sender: TObject);
begin
FrmServer := TFrmServer.Create (Self);
FrmServer.Top := 5;
FrmServer.Left := 900;
FrmServer.Show;
end;

BtServerErzegen ist hierbei noch Disabled erst wenn man Form 2 durch den Button1 schliesst soll halt dieser Button Enabled werden , das ist um zu verhindern das 2 mal das gleiche Formluar offen ist...

haentschman 30. Jan 2012 13:34

AW: Server Problem
 
versuch mal
Delphi-Quellcode:
Main.BtServerErzeugen.Enabled := True;
Wie DeddyH schon sagte du arbeitest nicht mit der Instanz. Das hätte dir eigentlich auch die Codevervollständigung sagen können :gruebel:

CallOfUnite 30. Jan 2012 13:37

AW: Server Problem
 
Zitat:

Zitat von haentschman (Beitrag 1148282)
versuch mal
Delphi-Quellcode:
Main.BtServerErzeugen.Enabled := True;
Wie DeddyH schon sagte du arbeitest nicht mit der Instanz. Das hätte dir eigentlich auch die Codevervollständigung sagen können :gruebel:

HEY cool danke danke danke das klappt... wieso bin ich da nicht selber drauf gekommen *facepalm*
haha^^
cool danke...
:)))

DeddyH 30. Jan 2012 13:38

AW: Server Problem
 
Vermutlich eher FrmMain, aber das kann nur der TE wissen, wie sein Hauptformular benannt ist :zwinker:

[edit] Schon wieder kein roter Kasten :? [/edit]

haentschman 30. Jan 2012 13:39

AW: Server Problem
 
Hier machst du es doch auch...
Die Form heißt TFrmServer. und die Instanz FrmServer.Top := 5;

Alles wird gut 8-)

CallOfUnite 30. Jan 2012 13:43

AW: Server Problem
 
Zitat:

Zitat von DeddyH (Beitrag 1148285)
Vermutlich eher FrmMain, aber das kann nur der TE wissen, wie sein Hauptformular benannt ist :zwinker:

[edit] Schon wieder kein roter Kasten :? [/edit]

stimmt jetzt alles so...
eine frage noch klingt jetzt blöd aber das klappt auch nicht >.<

TFrmServer.close;

[Fehler] mServer4.pas(122): E2076 Diese Form des Methodenaufrufs ist nur für Klassenmethoden erlaubt

DeddyH 30. Jan 2012 13:45

AW: Server Problem
 
Derselbe Fehler: nicht die Klasse, sondern die Instanz benutzen (also das führende T weglassen).

CallOfUnite 30. Jan 2012 13:46

AW: Server Problem
 
Zitat:

Zitat von DeddyH (Beitrag 1148296)
Derselbe Fehler: nicht die Klasse, sondern die Instanz benutzen (also das führende T weglassen).

Ja eben dachte ich auch^^ klappt aber trotzdem nicht...:oops:

DeddyH 30. Jan 2012 13:47

AW: Server Problem
 
Zitat:

Delphi-Quellcode:
FrmServer := TFrmServer.Create (Self);

Du hast also eine Instanz namens FrmServer der Klasse TFrmServer. Oder geht es jetzt um ein anderes Formular?

CallOfUnite 30. Jan 2012 13:51

AW: Server Problem
 
Zitat:

Zitat von DeddyH (Beitrag 1148298)
Zitat:

Delphi-Quellcode:
FrmServer := TFrmServer.Create (Self);

Du hast also eine Instanz namens FrmServer der Klasse TFrmServer. Oder geht es jetzt um ein anderes Formular?

Also es geht darum das halt beim Start des Programms alle Forms geöffnet werden, wenn man ein Formular 2 mal öffnet erscheint eine fehlermeldung, diese beuge ich damit vor das man halt wenn das eine Formular offen ist den Button nicht drücken kann , wenn man nun auf dem TFrmServer auf Application Schliessen (Button1) klickt soll dieses Form beendet werden und der Button in der Optionsleiste soll enabled werden um dieses Form wiederherzustellen, wenn das Form dann da ist geht der Button automatisch wieder auf den Boolschen
Wert- Enabled=False

haentschman 30. Jan 2012 13:55

AW: Server Problem
 
Hmmm...

irgendwie riecht das nach einem komischem Design und einer Unordnung in den Bezeichnern (Deklarationen/Instanzen) :roll:
male mal auf welches Formular mit welchem wie interagiert.

CallOfUnite 30. Jan 2012 13:55

AW: Server Problem
 
Zitat:

Zitat von CallOfUnite (Beitrag 1148301)
Zitat:

Zitat von DeddyH (Beitrag 1148298)
Zitat:

Delphi-Quellcode:
FrmServer := TFrmServer.Create (Self);

Du hast also eine Instanz namens FrmServer der Klasse TFrmServer. Oder geht es jetzt um ein anderes Formular?

Also es geht darum das halt beim Start des Programms alle Forms geöffnet werden, wenn man ein Formular 2 mal öffnet erscheint eine fehlermeldung, diese beuge ich damit vor das man halt wenn das eine Formular offen ist den Button nicht drücken kann , wenn man nun auf dem TFrmServer auf Application Schliessen (Button1) klickt soll dieses Form beendet werden und der Button in der Optionsleiste soll enabled werden um dieses Form wiederherzustellen, wenn das Form dann da ist geht der Button automatisch wieder auf den Boolschen
Wert- Enabled=False

ich komme mir grad wie der letzte idiot vor wegen solchen simplen fehlern...Tut mir leid :?

CallOfUnite 30. Jan 2012 13:59

AW: Server Problem
 
Zitat:

Zitat von haentschman (Beitrag 1148303)
Hmmm...

irgendwie riecht das nach einem komischem Design und einer Unordnung in den Bezeichnern (Deklarationen/Instanzen) :roll:
male mal auf welches Formular mit welchem wie interagiert.

Also

Main ->(interagiert) Server und Client (durch Main kann man halt neue Clients oder eben einen Server hinzufügen, bei mehreren 'Servern' würde es einen fehler geben. diesem will ich vorbeugen mit dem close usw...

Server -> Main (Button enablen)

haentschman 30. Jan 2012 14:01

AW: Server Problem
 
erzeugst du das Formular "Server" zur Laufzeit ?

PS: in dem Formular muß natürlich die Main bekannt sein...
Delphi-Quellcode:
uses Main
nicht vergessen ?

CallOfUnite 30. Jan 2012 14:04

AW: Server Problem
 
Zitat:

Zitat von haentschman (Beitrag 1148309)
erzeugst du das Formular "Server" zur Laufzeit ?

PS: in dem Formular muß natürlich die Main bekannt sein...
Delphi-Quellcode:
uses Main
nicht vergessen ?

jaja hab ich auch schon dran gedacht und auch schon ausprobiert...

->
[Fataler Fehler] mServer4.pas(7): F2047 Zirkuläre Unit-Referenz auf 'mServer4'

haentschman 30. Jan 2012 14:05

AW: Server Problem
 
dann schieb mal die
Delphi-Quellcode:
uses Main
unterhalb von implementation

DeddyH 30. Jan 2012 14:06

AW: Server Problem
 
Nochmal ganz langsam: in der Unit zu frmMain erzeugst Du das Server-Formular und zeigst es an. Wo steht denn nun der Close-Aufruf, der nicht will? In der Unit zum Server?

haentschman 30. Jan 2012 14:08

AW: Server Problem
 
Zitat:

In der Unit zum Server?
jupp... und auch von dort möchte er in Main den Button wieder enablen.

CallOfUnite 30. Jan 2012 14:09

AW: Server Problem
 
Zitat:

Zitat von CallOfUnite (Beitrag 1148312)
Zitat:

Zitat von haentschman (Beitrag 1148309)
erzeugst du das Formular "Server" zur Laufzeit ?

PS: in dem Formular muß natürlich die Main bekannt sein...
Delphi-Quellcode:
uses Main
nicht vergessen ?

jaja hab ich auch schon dran gedacht und auch schon ausprobiert...

->
[Fataler Fehler] mServer4.pas(7): F2047 Zirkuläre Unit-Referenz auf 'mServer4'


auch schon überlegt die uses in implementation einzubauen klappt aber auch nicht, brauche halt iwie die zuweisung des forms auf den close 'befehl'

CallOfUnite 30. Jan 2012 14:10

AW: Server Problem
 
Zitat:

Zitat von haentschman (Beitrag 1148315)
Zitat:

In der Unit zum Server?
jupp... und auch von dort möchte er in Main den Button wieder enablen.

das enablen klappt ja bereits super, close geht halt nicht ...

DeddyH 30. Jan 2012 14:10

AW: Server Problem
 
Aber dann genügt doch ein einfaches Close.
Delphi-Quellcode:
procedure TFrmServer.ButtonMachZuClick(Sender: TObject);
begin
  Close;
end;
Dazu muss man die Main-Unit doch nicht einbinden, außerdem passt das so immer, egal ob die Instanz nun "FrmServer" oder "PapaSchlumpf" heißt ;)

haentschman 30. Jan 2012 14:12

AW: Server Problem
 
Main braucht er um den Button in Main zu enablen...:zwinker: 2 getrennte Probleme Button / Close

CallOfUnite 30. Jan 2012 14:13

AW: Server Problem
 
Zitat:

Zitat von DeddyH (Beitrag 1148318)
Aber dann genügt doch ein einfaches Close.
Delphi-Quellcode:
procedure TFrmServer.ButtonMachZuClick(Sender: TObject);
begin
  Close;
end;
Dazu muss man die Main-Unit doch nicht einbinden, außerdem passt das so immer, egal ob die Instanz nun "FrmServer" oder "PapaSchlumpf" heißt ;)

:wall: aaaah shit :DDDDDD
danke da wär ich nicht drauf gekommen -.-

100 rote rosen zu dir :D

CallOfUnite 30. Jan 2012 14:13

AW: Server Problem
 
Zitat:

Zitat von CallOfUnite (Beitrag 1148321)
Zitat:

Zitat von DeddyH (Beitrag 1148318)
Aber dann genügt doch ein einfaches Close.
Delphi-Quellcode:
procedure TFrmServer.ButtonMachZuClick(Sender: TObject);
begin
  Close;
end;
Dazu muss man die Main-Unit doch nicht einbinden, außerdem passt das so immer, egal ob die Instanz nun "FrmServer" oder "PapaSchlumpf" heißt ;)

:wall: aaaah shit :DDDDDD
danke da wär ich nicht drauf gekommen -.-

100 rote rosen zu dir :D

Klappt alles wie ichs wollte

Danke an euch beide...
Hoffe das ich evtl auch im forum mal nen paar leuten helfen kann :)

DeddyH 30. Jan 2012 14:14

AW: Server Problem
 
Das würde ich zwar so nicht machen, aber OK.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:02 Uhr.

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