Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Statusbar Text, Panelbreite (https://www.delphipraxis.net/106853-statusbar-text-panelbreite.html)

max2621 17. Jan 2008 19:53


Statusbar Text, Panelbreite
 
Hallo,

Erneut sind fürmich einige Probleme nicht lösbar:

1.Ich habe mit Indy10 einen Telnet Client als Procedure geschrieben. Die Rückmeldungen des clients sollen jeweils in ein Panel der Statusbar geschrieben werden. Es gelingt mit dem folgenden Code die Meldungen des Servers jeweils in ein Memofeld zu schreiben. Im Panel passiert nichts beziehungsweise es erscheint nach disconnect nur die letzte Meldung:

Delphi-Quellcode:
procedure TForm1.TSReader;

begin

      TCPClient.Connect;
      if TCPClient.Connected then begin

      msg:= TCPClient.IOHandler.ReadLn;
      Memo1.Lines.add(msg);

      TCPClient.IOHandler.WriteLn('stop');
      msg:= TCPClient.IOHandler.ReadLn;
      Memo1.Lines.add(msg);
      statusbar1.Panels[2].Text:=msg;

      sleep (1000);

      TCPClient.IOHandler.WriteLn(tune);
      msg:= TCPClient.IOHandler.ReadLn;
      Memo1.Lines.Add(msg);
      statusbar1.Panels[2].Text:=msg;

      TCPClient.IOHandler.WriteLn('stall 30');
      msg:= TCPClient.IOHandler.ReadLn;
      Memo1.Lines.add(msg);
      statusbar1.Panels[2].Text:=msg;

      TCPClient.IOHandler.WriteLn(play);
      msg:= TCPClient.IOHandler.ReadLn;
      Memo1.Lines.Add(msg);
      statusbar1.Panels[2].Text:=msg;

      TCPClient.IOHandler.WriteLn('play vlc1');
      msg:= TCPClient.IOHandler.ReadLn;
      Memo1.Lines.Add(msg);
      statusbar1.Panels[2].Text:=msg;

      TCPClient.Disconnect;

      VLCPlugin1.stop;
      VLCPlugin1.addTarget('http:wjonat.dyndns.org:80 :http-caching=3000)', null, VLCPlayListInsert, 0);
      Memo1.Lines.Add(msg);
      statusbar1.Panels[2].Text:=msg;
      VLCPlugin1.play;

   end;
end;

Was mache ich falsch?


Das zweite von mir nicht gelöste Problem betrifft die Breite eines Panels. Bei Grössenänderung des ProgrammFensters wird jeweils das rechte äusserste Panel (bei z.B. 3 Panels) angepasst, die beiden anderen Panels behalten ihre Breite. Ist es möglich, das die Breite desrechten Panels konstant bleibt aber das mittlere angepasst wird??

Wie man unschwer erkennt bin ich blutiger Anfänger und bin für jede Hilfe dankbar.

Euer Max2621

taaktaak 17. Jan 2008 20:06

Re: Statusbar Text, Panelbreite
 
Hallo Max,
zum ersten Punkt kann ich nix sagen, aber zum 2ten:
Na klar geht das! Du musst die Breite des 2ten (oder auch des 1sten Panels) anpassen, wenn sich die Fensterbreite ändert. Deine Anpassung muss beide Panels so in der Breite verändern, dass immer der gleiche Rest (für das dritte Panel) übrig bleibt. Wo musst du die Breite neu festlegen? Da bin ich mir nicht so sicher, würde sagen im OnResize-Event (Alternative wäre sonst noch OnDrawPanel)
Gruß Ralph

OG Karotte 17. Jan 2008 20:06

Re: Statusbar Text, Panelbreite
 
Formatiere doch bitte erst einmal Deinen Code
Delphi-Quellcode:
 Dein Code
Die entsprechenden BBCodes findest Du oberhalb der Textbox zum Schreiben der Nachricht (oder von Hand '['delphi']' bzw. '['/delphi']' (die eckigen Klammern jeweils ohne ')).

Zu deinem 2. Prob:
Code:
Breite des mittleren Panel := Breite des Fenster's (Statusleiste) - Breite des rechten Panel's - Breite des Linken Panel's

sirius 17. Jan 2008 20:12

Re: Statusbar Text, Panelbreite
 
In erster Instanz dürfte die ein Application.ProcessMessages nach jeder Textänderung helfen. Du kommst ja aus deiner Methode nicht zurück und deswegen kann sich der TExt auch nicht ändern, denn das steht in einer anderen Methode.
Das Memo schafft es (über sendmessage) sich selber zu verändern, das macht die Statusbar (und die meisten anderen Kompos)nicht. Das ist von dem Memo auch nicht so schön, aber nicht zu vermeiden.

Du solltest aber die Strktur deines Programmes noch mal Grundlegend überdenken. Du solltest mer ereignisorientiert arbeiten. Ich vermute, dass wird dir jetzt nicht viel sagen. Also: Du schickst ein Zeichen los. Das ist eine Methode und dann ist diese fertig. Bestimmt hat deine Komponente ein Ereignis, dass ausgelöst wird, wenn eine NAchricht zurückkommt. Nimm diese und mache dann deine nächsten Schritte. usw.... Dann benötigst du auch kein hässliches "sleep" und kein Application.processMessages.


Größe ändern:
Auch wieder auf ereignisse reagieren. Die Statusbar hat das Ereignis onResize. Genau dort ist es an der Zeit deine Panels neu auszurichten.

max2621 17. Jan 2008 20:26

Re: Statusbar Text, Panelbreite
 
Lieber Stefan, lieber Ralph,

vielen Dank für Eure schnelle Hilfe. Wenn ich darf möchte ich nochmal nachlegen. Das Problem ist, dass die Grösse des rechten Panels auch bei Verkleinern gleich bleibt und nur das mittlere die Grösse anpasst.

Ich hoffe ich drücke mich klar genug aus.

Code werde ich nächstes Mal richtig schreiben, wie gesagt blutiger Anfänger.

Euer
Max 2621

OG Karotte 17. Jan 2008 20:34

Re: Statusbar Text, Panelbreite
 
Deinen Code kannst Du / solltest Du immer noch "anpassen", denn bis zu einer Stunde nach dem Post kannst Du ihn noch editieren...

Zitat:

Zitat von max2621
Ich hoffe ich drücke mich klar genug aus.

Nö...

Zitat:

Zitat von max2621
Das Problem ist, dass die Grösse des rechten Panels auch bei Verkleinern gleich bleibt und nur das mittlere die Grösse anpasst.

Welches Panel möchtest Du denn anpassen ???

Das mittlere beim Vergrössern und das rechte beim Verkleinern :gruebel:

max2621 17. Jan 2008 20:34

Re: Statusbar Text, Panelbreite
 
Lieber Sirius,

auch Dir vielen Dnk. Ich begreiffe glaube ich was Du meinst und werde mich weiter vorantasten. Zum Problem 1 und dem ausgelösten Ereigniss. Ich will über den Telnetclient Befehle an den Server schicken die dieser jeweils nach abarbeiten mit einer Meldung quittiert. Dann folgt der nächste Befehl u.s.w. (Umschalten von TV Programmen auf einem Streaming Server).
Ist es unverschämt wenn ich Dich bitte ein kurzes Beispiel anhand meines Codes zu schicke. Ich will aber keinesfalls unverschämt sein.
Auch so hast Du geholfen.

Max 2621

max2621 17. Jan 2008 20:38

Re: Statusbar Text, Panelbreite
 
Lieber Stefan,

wie Du siehst lerne ich noch.

Gruss Max 2621

sirius 17. Jan 2008 20:40

Re: Statusbar Text, Panelbreite
 
Wenn du mir noch kurz sagst, welche Komponenten du verwendet hast...

max2621 17. Jan 2008 20:41

Re: Statusbar Text, Panelbreite
 
Lieber Stefan,

das mittlere soll die Grösse ändern oder anpassen egal ob vergrössern oder verkleinern., das rechte immer gleich bleiben.

Gruss Max 2621


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 Uhr.
Seite 1 von 2  1 2      

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