![]() |
Fortschrittsanzeige in RichEdit?
Hi,
Seit einiger Zeit programmiere ich an einem Chat (Oh Wunder gabs ja noch nie xD). Dieser soll mit Streaming und Datenübertragung sein (weswegen ich euch wahrscheinlich noch belästigen werde). Auf jeden Fall habe ich mir jetzt überlegt wie ich denn eine Fortschrittsanzeige in das JvRichEdit bekomme, die den Download Fortschritt anzeigt (so ähnlich wie in MSN oder Skype). Geht das mit einem Ole Objekt, das ich einfach in das RichEdit einfüge? Und wenn ja habt ihr vielleicht ein Tutorial für das Erstellen eines Ole Objektes? |
AW: Fortschrittsanzeige in RichEdit?
Zitat:
Für meinen Geschmack hat ein Richedit und eine Fortschrittsanzeige nichts, aber auch garnichts miteinander zu tun! Vielleicht könnte man ein transparentes Form über das Richedit legen, auf dem eine Fortschrittsanzeige zu sehen ist? Gruß K-H |
AW: Fortschrittsanzeige in RichEdit?
Wieso nimmst du nicht sowieso einen TWebbrowser dafür? Der ist doch viel flexibler...
|
AW: Fortschrittsanzeige in RichEdit?
Mh bei dem Webbrowser bin ich aber dann auf den Internet Explorer angewiesen und wenn der auf dem System nicht funktioniert geht mein Chat auch nicht.
Außerdem will ich auch etwas dazulernen. |
AW: Fortschrittsanzeige in RichEdit?
Hi,
wenn du beides in einer Komponente haben willst musst du eine neue Komponente erstellen, vlt. so in dieser Art:
Delphi-Quellcode:
Und für den Fortschrittsbalken (so in der Art):
type
tMyRichEdit = class(tRichEdit) private FProgressBar: TProgressBar; ... protected ... public ... published ProgressBar: TProgressBar READ FProgressBar; //WRITE FProgressBar; ... end;
Delphi-Quellcode:
Ich hoffe, dass ich dein Problem richtig verstanden habe und dir helfen konnte.
procedure SetProgressBar(Send, Total: double);
begin MyRichEdit1.ProgressBar.Position:=round(100* Send/Total); end; Liebe Grüße Sora EDIT: Stimmt Sir Rufo, READ+WRITE ist für mich einfach Standard und ich habe nicht dran gedacht, dass nur ein READ gesetzt werden darf. Entschuldigung. |
AW: Fortschrittsanzeige in RichEdit?
Wohl doch eher so
Delphi-Quellcode:
type
tMyRichEdit = class(tRichEdit) private FProgressBar: TProgressBar; ... protected ... public ... published property ProgressBar: TProgressBar READ FProgressBar; // nur lesend auf den Instanz-Zeiger!!! ... end; |
AW: Fortschrittsanzeige in RichEdit?
Also ich würde die Fortschrittsanzeige an den Datenstrom anbinden und nicht an das Richedit-Control.
(Moderator Lucky hat eine StreamProgressAdapter Klasse; leider finde ich den Link dazu nicht mehr.) Dazu muss das Chat-Protokoll natürlich so ausgelegt sein, dass der Empfänger im Voraus mitgeteilt bekommt, wieviele Bytes er zu erwarten hat. Andererseits sind Chat-Nachrichten so kurz, dass sie in einem Netzwerk (>500kbit/s) so schnell übertragen sind, dass eine Fortschrittsanzeige sinnlos ist. Nur bei einem Peer-to-Peer Filetransfer würde das Sinn machen. Und beim Filetransfer ist das Richedit-Control ja gar nicht beteiligt. |
AW: Fortschrittsanzeige in RichEdit?
Du kannst den TWebBrowser auch nur für die Anzeige der lokal zusammengestellten Daten verwenden, dann ist er garnicht am Datentransfer beteiligt und es ist egal ob der IE ins Internet kommt oder nicht.
Den Fortschritt könnte man über DIVs oder eine TABLE gestallten. Programmseitig hat man Zugriff auf's DOM des TWebBrowsers und kann den Inhalt auch geziehlt verändern, wie z.B. die Breite der angezeigten DIVs. |
AW: Fortschrittsanzeige in RichEdit?
Vielleicht als Denkanstoß:
Auf dem Canvas eines RichEdit kann man auch zeichnen. Jedenfalls beim TJvRichEdit klappt das. Vielleicht mal in die Richtung experimentieren? :) |
AW: Fortschrittsanzeige in RichEdit?
@sx2008: Ich möchte die Fortschrittsanzeige ja auch für den Dateitransfer nutzen und nicht für die einzelnen Chat-Nachrichten.
@Progman: Danke das werde ich mal probieren. //Edit: Bei mir existiert beim TJvRichEdit das Canvas nicht! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz