![]() |
Eigene Konsole: Problem bei der Eingabe
Hi ich bins mal wieder :-D
Es geht mal wieder um ein eher gedankliches Problem :) Es geht um folgendes: Ich bin daran ein Matrix-like Chat zu schreiben, also schwarzer Hintergrund, Vollbild und grüne Schrift. (NEIN, das Problem ist nicht wie bei veilenm anderen die Verbindung, die funktioniert perfekt :wink: ) Soweit kein Problem, ich habe das mit einem grossen Memo das den ganzen Bildschirm ausfüllt gelöst. Ich übernehme die Eingabe auch selber, damit ich besser eingreifen kann (z.B. das man nicht schon stehender Text einfach löschen kann) Ausserdem lasse ich den Text "hinschreiben", also so wie man es vielleicht aus diversen Hackerfilmen oder so kennt, also der Text nicht sofort erscheint sondern Zeichen für Zeichen. Hier mal veranschaulicht in einem Video: ![]() Das Schreiben des Textes geschieht mittels eines Timers, der Code dazu:
Delphi-Quellcode:
ToWrite ist ein String der den Text enthält, der geschrieben werden soll, es wird immer jeweils ein Zeichen am Anfang gelöscht bis er leer ist.
procedure TfrmChat.timWriteTimer(Sender: TObject);
var DelCursor: string; begin if Length(ToWrite) > 0 then begin DelCursor := memChat.Lines.Text; if Phase < 4 then begin SetLength(DelCursor,Length(DelCursor)-1); end else begin SetLength(DelCursor,Length(DelCursor)-3); end; memChat.Lines.Text := DelCursor; if Phase < 4 then begin memChat.Lines.Text := memChat.Lines.Text + Copy(ToWrite,0,1)+#95; end else begin memChat.Lines.Text := memChat.Lines.Text + Copy(ToWrite,0,1)+#95+#10; end; Delete(ToWrite,1,1); CanType := false; end else begin CanType := true; end; end; Wenn CanType = true ist dann kann Text eingegeben werden, ansonsten nicht. Der eingegebene Text wird in der Variable Input gespeichert, so ist es einfacher für mich den Text auszulesen weil ich nix parsen muss :wink: Ich würde noch gerne den Quellcode von der Tastenabfrage hier rein stellen aber ich denke er ist zu gross deshalb hier nur einen Link ohne Highlighting: ![]() Falls dennoch gewünscht wird ihn hier rein zu stellen und auch die Moderatoren einverstanden sind, dann wedre ich das tun. So nun zum Problem: Ich will während oben irgendwelcher Text hingeschrieben wird (von einem anderen Chatpartner zum Beispiel) dass man trotzdem eine Zeile weiter unten normal weiterschreiben kann. Ich kanns mir gedanklich einfach nicht vorstellen wie ich das bewerkstelligen soll :cry: Ich weiss es war jetzt ziemlich viel Text, tut mir auch wirklich leid aber ich konnte mich nicht kürzer fassen damit ihr versteht was ich machen will. Falls irgendwelche Fragen bestehen einfach stellen. So, ich danke hier schon mal fürs Durchlesen und ich hoffe auf eure Hilfe :-D Cu Kill0r |
Re: Eigene Konsole: Problem bei der Eingabe
Unsichtbar!
Wie wärs mit einem typen, der den zu schreibenen text speichert, die zeile, in der er ausgegeben wird/werden soll und was du sonst noch so brauchst. Dann machst du dir ein dynamisches array von diesem type. In deinem timer event machst du ne schleife durch den array und machst für jeden eintrag normal weiter. Ich hoffe mal, dass ich dich richtig verstanden habe Edit: Der type könnte dann ungefähr so aussehen: type TMatrixZeile=record FullText: string; Line: integer; Progress: integer; Done: boolean; end; var MatrixZeilen: array of TMatrixZeile; [Ich hab dich falsch verstanden - ich dachte du wolltest wissen, wie man mehrere zeilen gleichzeitig so ausgeben kann] |
Re: Eigene Konsole: Problem bei der Eingabe
Oder du schreibst den Text in schwarz hin und lässt ihn mit nem extra timer schritt für schritt clLime werden
|
Re: Eigene Konsole: Problem bei der Eingabe
Inherited hat vollkommen recht, einfach alles von Unsichtbar zu clLime oder so überlaufen lassen, dabei können die Hex-Farben und RGB-Farben helfen ($FARBCODE, RGB(0,0,0)).
|
Re: Eigene Konsole: Problem bei der Eingabe
Hmmm... Ich kann euch nicht ganz folgen.
Ich sehe den Sinn nicht was das bringen soll :stupid: Könnt ihr mir das vielleicht ein bisschen näher erläutern? :oops: Cu Kill0r |
Re: Eigene Konsole: Problem bei der Eingabe
Ich denke sie wollen damit sagen dass du praktisch die Buchstaben 'in'faden lassen sollst. Also sie sind schon da (unsichtbar) und werden dann sichtbar Buchstabe fuer Buchstabe!
|
Re: Eigene Konsole: Problem bei der Eingabe
Zitat:
|
Re: Eigene Konsole: Problem bei der Eingabe
Ja, soweit verstehe ich das schon ;)
Aber ich sehe nicht den Sinn darin weil ja das Problem ja immer noch besteht oder? :? Ich habe da einfach einen Knopf in meiner Logik :( Naja ich habe gerade eine Idee und versuch sie auszuarbeiten mal gucken ob es klappt :D Könnt ruhig weiter Vorschläge oder Ideen posten, freue mich für jede Antwort ;) Cu Kill0r |
Re: Eigene Konsole: Problem bei der Eingabe
Kannst ja einfach ein schwarzes Edit-Feld über die unterste Zeile legen...
|
Re: Eigene Konsole: Problem bei der Eingabe
Hmm... nee, da ist mir eine elegantere Lösung lieber, auch wenn sie schlussendlich komplizierter ist ;)
Naja egal, ich hab jedenfalls selber eine Lösung ausgearbeitet und sie scheint zu funktionieren :D Trotzdem vielen Dank für eure Hilfe :hello: Cu Kill0r |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:12 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 by Thomas Breitkreuz