Seite 1 von 1

Bildaufbau und Abarbeitung ...

Verfasst: 21.04.2006 23:51
von der-sigi
Hi, habe noch eine "dumme" Frage zu der ich keine Info gefunden habe.

Ich mach ein Fenster auf, schiebe Textfelder, Eingabefelder, Bilder und Knöpfe hinein - mache also das komplette Aussehen fertig - und schaue dann nach ob eine Netzwerkverbindung steht. Dann gehts weiter ...

Code: Alles auswählen

If OpenWindow()
  If CreateGadgetList(WindowID())
    TextGadget()
    ImageGadget()
    ButtonGadget()
  EndIf
EndIf
SetGadgetText()
...
If InitNetwork()
  ...
In Kürze sieht das so aus wie dargestellt. Wenn ich jetzt die Netzwerkverbindung abklemme und das Programm starte, dann baut sich das Fenster auf, die Texte werden gesetzt, die Bilder gemalt, nur die Knöpfe und Eingabefelder fehlen! Erst wenn das Kabel wieder drin steckt, malt es auch die Knöpfe und die Eingabefelder hinzu. Das kann man auch unter Windows mit einer Firewall nachvollziehen. Erst wenn die freigibt, werden die Knöpfe und Eingabefelder gemalt.

Das Ganze sieht ein wenig "besch...eiden" aus und von der Programmabfolge hätte ich gedacht, daß das so nicht sein sollte. Habe ich was übersehen oder mißverstanden?

Verfasst: 22.04.2006 00:30
von benpicco
Naja, das Fenster wird erst durch ein WindowEvent geupdatet:
--> 3 Möglichkeiten:
1. Netzwerkaufbau vor dem Fenster machen
2. Das Fenster erst mit #PB_Window_Invisible (Flag von OpenWindow()) nicht anzeigen lasse und es nach erfolgreicher netzwerkabfrage mit HideWindow() wieder sichtbar machen
3. Nach dem fertigen Fensteraufbau erstmal mit while WindowEvent() : Wend alle Ereignisse abfangen und das Fenster aktualisieren.

Verfasst: 22.04.2006 10:04
von der-sigi
Hallo benpicco

Danke für deine Hilfe.

> Naja, das Fenster wird erst durch ein WindowEvent geupdatet

Daß die Eingabefelder und Knöpfe zu einem Update gehören und nicht gleich gemalt werden, wie die anderen Teile, hätte ich jetzt nicht gedacht. Ist für mich auch nicht logisch oder nachvollziehbar.

> 1. Netzwerkaufbau vor dem Fenster machen

Ist wohl nicht sinnvoll, weil man dann startet und nichts passiert.

> 2. Das Fenster erst mit #PB_Window_Invisible (Flag von OpenWindow()) nicht anzeigen lasse ...

Wie bei 1.

> 3. Nach dem fertigen Fensteraufbau erstmal mit while WindowEvent() : Wend alle Ereignisse abfangen und das Fenster aktualisieren.

Aha, das war's. Ich habe es nur einmal abgefragt und da passierte (noch) nichts.

Also, jetzt malt es das komplette Fenster mit allem drum und dran. Bei einer Firewall, kommt dann noch die Meldung, daß "InitNetwork()" erfolgreich war. Danach geht es erst weiter, wenn die Firewall freigibt oder sperrt - wenn man die so eingestellt hat, daß man gefragt werden will. Nach dem "InitNetwork()" habe ich nur ein "If CreateNetworkServer()" drin. Bei dem bleibt es stehen und geht positiv weiter nach der Firewall Auswahl egal was man wählt. Weiß da jemand was dazu?

Optionsfrage: Ob 'ne Firewall mich sperrt, kann man wohl kaum erfragen, oder?

[edit 2006-04-22 10:15:40]
Optionsfrage: Doch, geht: Wenn man folgendes macht.

Code: Alles auswählen

#LoopBack = "127.0.0.1"
ConnectionID = OpenNetworkConnection(#LoopBack,ConnectionPort)
If ConnectionID
  ConnectStatus = 1
  CloseNetworkConnection(ConnectionID)
Else
  ConnectStatus = 0
EndIf
Wenn man eine direkte Zieladresse hat, kann man natürlich die direkt eingeben.
[/edit]

Viele Grüße
Sigi

Verfasst: 23.04.2006 16:16
von Tafkadasom2k5
der-sigi hat geschrieben:Hallo benpicco

Danke für deine Hilfe.

> Naja, das Fenster wird erst durch ein WindowEvent geupdatet

Daß die Eingabefelder und Knöpfe zu einem Update gehören und nicht gleich gemalt werden, wie die anderen Teile, hätte ich jetzt nicht gedacht. Ist für mich auch nicht logisch oder nachvollziehbar.

> 1. Netzwerkaufbau vor dem Fenster machen

Ist wohl nicht sinnvoll, weil man dann startet und nichts passiert.

> 2. Das Fenster erst mit #PB_Window_Invisible (Flag von OpenWindow()) nicht anzeigen lasse ...

Wie bei 1.
Schonmal dran gedacht, dass du auch ohne Fenster ExceptionHandling machen könntest? Fenster öffnet sich nicht, Netzwerk klappt nicht --> Messagebox. Reicht doch völlig aus?

MFG
Tafkadasom2k5

Verfasst: 25.04.2006 20:28
von der-sigi
Hallo Tafkadasom2k5

> Schonmal dran gedacht, dass du auch ohne Fenster ExceptionHandling machen könntest? Fenster öffnet sich nicht, Netzwerk klappt nicht --> Messagebox. Reicht doch völlig aus?

1) Sowas mag ich garnicht.

2) Bin ich der Meinung, daß ein gutes Programm auch mit EINEM Fenster auskommen kann und nicht zig Extrafenster aufpoppen muß.

3) Zweitens soll das ein kleines Progrämmchen mit EINEM Fenster werden in das es auch die Fehlermeldungen zeigt und man per Tastendruck dann "wiederholen" kann. Das wäre mit so einem Extrafenster recht unschön.

Somit käme dein netter Beitrag nicht zum Tragen. Trotzdem Danke für die Info.

Viele Grüße
Sigi