Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Lauftext - Label immer auf Mindestgröße (https://www.delphipraxis.net/103233-lauftext-label-immer-auf-mindestgroesse.html)

Tobicaster 12. Nov 2007 19:24


Lauftext - Label immer auf Mindestgröße
 
Aktuelles Problem weiter unten^^

Delphi-Quellcode:
implementation
  var
    lauftext, buchstabe: string;
{$R *.dfm}


procedure TForm1.TimerTimer(Sender: TObject);
begin
  buchstabe := copy(lauftext, 1, 1);
  LLauftext.Caption := lauftext + buchstabe;
  lauftext := LLauftext.Caption;
  delete(lauftext, 1, 1);
end;

procedure TForm1.BStartHierClick(Sender: TObject);
begin
  lauftext := Edit.Text;
  LLauftext.Caption := lauftext;
  Timer.Enabled := true;
  Edit.Visible := false;
end;

procedure TForm1.BStopHierClick(Sender: TObject);
begin
  Timer.Enabled := false;
  LLauftext.Caption := '';
  Edit.Visible := true;
end;
Problem ist, dass mir folgendes angezeigt wird:

Zitat:

Test
TestT
estTe
stTes
tTest
TestT
...
Wieso wird beim ersten Mal nur hinzugefügt und nicht gelöscht?

Apollonius 12. Nov 2007 19:27

Re: Lauftext - Ein Buchstabe zuviel
 
Du aktualisierst erst das Label und dann löschst du den ersten Buchstaben.

mkinzler 12. Nov 2007 19:30

Re: Lauftext - Ein Buchstabe zuviel
 
Delphi-Quellcode:
buchstabe := copy(lauftext, 1, 1);
lauftext := LLauftext.Caption + buchstabe;
delete(lauftext, 1, 1);
LLauftext.Caption := lauftext;

Tobicaster 12. Nov 2007 19:40

Re: Lauftext - Ein Buchstabe zuviel
 
Ich hab's jetzt so

Delphi-Quellcode:
procedure TForm1.TimerTimer(Sender: TObject);
begin
  buchstabe := copy(lauftext, 1, 1);
  delete(lauftext, 1, 1);
  LLauftext.Caption := lauftext + buchstabe;
  lauftext := LLauftext.Caption;

end;
Scheint auch zu funktionieren, allerdings gibt's da noch ein anderes Problem.
Wie kann ich einstellen, dass das Label halt komplett von links nach rechts geht und sich nicht auf die Mindestgröße einstellt?

Zacherl 12. Nov 2007 19:42

Re: Lauftext - Ein Buchstabe zuviel
 
AutoSize auf false.

Tobicaster 12. Nov 2007 19:49

Re: Lauftext - Ein Buchstabe zuviel
 
Zitat:

Zitat von Zacherl
AutoSize auf false.

im objektinspektor steht, dass AutoSize schon false ist :wiejetzt: Woran könnt es denn sonst noch liegen?

Tobicaster 12. Nov 2007 21:00

Re: Lauftext - Label immer auf Mindestgröße
 
Hm, ich komm auf keine Lösung. Jemand ne Idee?

Namenloser 12. Nov 2007 21:26

Re: Lauftext - Label immer auf Mindestgröße
 
Delphi-Quellcode:
var
  text: string;
begin
  text := label1.text+label1.caption[1];
  delete(text,1,1);
  label1.caption := text;
end;
Ungetestet!

€dit: Wie gesagt, ungetestet ;) Hab die unnötige Variable rausgeschmissen und Caption/Text geändert.

Tobicaster 12. Nov 2007 21:39

Re: Lauftext - Label immer auf Mindestgröße
 
Zitat:

Zitat von NamenLozer
Delphi-Quellcode:
var
  c: char;
  text: string;
begin
  text := label1.text+label1.text[1];
  delete(text,1,1);
  label1.text := text;
end;
Ungetestet!

Labels haben captions, keinen "text". Und was ist mit c?
Aber das Problem ist ja schon gelöst, mir geht's jetzt nur um das label, bzw, dass der Lauftext durch das ganze Label laufen soll. Das Label ist nämlich nachdem ich starte immer nur so breit, wie Buchstaben vorhanden sind.

mkinzler 12. Nov 2007 21:46

Re: Lauftext - Label immer auf Mindestgröße
 
Eigentlich sollte sich die Breite bei deaktiviertem AutoSize nicht mehr ändern. Aber du könntest das label ja manuell auf die Breite des Parents setzen

Tobicaster 12. Nov 2007 21:54

Re: Lauftext - Label immer auf Mindestgröße
 
Ich glaube, ich hab das Problem.
Ich versuche es mal z uveranschaulichen.
Code:
So verhält es sich grade:


|               Test              |
|               estT              |
|               stTe              |
|               tTes              |
[...]

So ist es aber erwünscht:

|               Test              |
|              Test               |
|             Test                |
[...]
| Test                            |
|Test                             |
|est                             T|
|st                             Te|
|t                             Tes|
|                              Test|
[...]
Any ideas?

mkinzler 12. Nov 2007 21:55

Re: Lauftext - Label immer auf Mindestgröße
 
Einfach Anfangstrimn um Leerzeichen erweitern.

Tobicaster 12. Nov 2007 22:05

Re: Lauftext - Label immer auf Mindestgröße
 
Zitat:

Zitat von mkinzler
Einfach Anfangstrimn um Leerzeichen erweitern.

Delphi-Quellcode:
  buchstabe := copy(lauftext, 1, 1);
  delete(lauftext, 1, 1);
  LLauftext.Caption := ' ' + lauftext + buchstabe;
  lauftext := LLauftext.Caption;
Klappt...naja, nicht ganz xD Aus "Test" wird "estT" und dann funktioniert es erst...Ich steh echt aufn Schlauch

mkinzler 12. Nov 2007 22:08

Re: Lauftext - Label immer auf Mindestgröße
 
Nein am Anfang also aus 'Test' 'Test ' machen

Tobicaster 12. Nov 2007 22:27

Re: Lauftext - Label immer auf Mindestgröße
 
Wie mach ich das denn, dass das nur beim ersten String gemacht wird, und dann nicht mehr?

mkinzler 12. Nov 2007 22:28

Re: Lauftext - Label immer auf Mindestgröße
 
Delphi-Quellcode:
procedure TForm1.BStartHierClick(Sender: TObject);
begin
  lauftext := Edit.Text+' ';

Tobicaster 12. Nov 2007 22:32

Re: Lauftext - Label immer auf Mindestgröße
 
Passiert leider nicht viel, jetzt ist da zwar ein Leerzeichen drin, aber trotzden immer noch das gleiche Problem ->

Delphi-Quellcode:

|    Test    |
|    est T   |
|    st Te   |
|    t Tes   |
|     Test   |
[...]

mkinzler 12. Nov 2007 22:35

Re: Lauftext - Label immer auf Mindestgröße
 
Du musst statt des einen Leerzeichens den String auf die maximale Länge mit Leerzeichen auffüllen

Tobicaster 12. Nov 2007 22:37

Re: Lauftext - Label immer auf Mindestgröße
 
Jetzt ausprobieren wäre sicher eine unschöne Lösung. Kann man das nicht eleganter machen als jetzt auszuprobieren, wie viele Leerzeichen reinpassen? Was passiert dann, wenn ich statt "Test" eienn langen Satz drin stehen habe?

mkinzler 12. Nov 2007 22:39

Re: Lauftext - Label immer auf Mindestgröße
 
Einfach Leerstring maximaler Länge anfügen und dann auf maximale Länge kürzen.

Tobicaster 12. Nov 2007 22:47

Re: Lauftext - Label immer auf Mindestgröße
 
Hab jetzt

Delphi-Quellcode:
lauftext := Edit.Text + '                                           ';
stehen. Allerdings sieht das irgendwie...unschön aus. Gibt es da ne bessere Möglichkeit oder ist das die, die du meintest?
Danke auf jeden Fall, ich fange langsam an, endlich ein wenig zu begreifen :)

mkinzler 12. Nov 2007 22:50

Re: Lauftext - Label immer auf Mindestgröße
 
So hatte ich gemeint und dann auf maximal Länge kürzen

z.B. Max Länge 10:
Delphi-Quellcode:
s := 'Hallo'+'         ';
setLength( s, 10);
->
Code:
s = 'Hallo    '

Tobicaster 12. Nov 2007 23:04

Re: Lauftext - Label immer auf Mindestgröße
 
Delphi-Quellcode:
lauftext := Edit.Text + '                                       ';
setLength(lauftext, 70);
Klappt super, danke!
Ist es noch möglich zu programmieren, dass man ins Edit-Feld nichts mehr eingeben kann, wenn man die maximale Länge erreicht hat?

Progman 12. Nov 2007 23:14

Re: Lauftext - Label immer auf Mindestgröße
 
Length(Edit1.Text) bei der Eingabe prüfen

Tobicaster 12. Nov 2007 23:20

Re: Lauftext - Label immer auf Mindestgröße
 
Hm. hab grad nen ganz anderes Problem. Wenn ich Enter drück, wird keine neue Zeile gemacht, stattdessen lande ich einfach eine Zeile tiefer...was ist nu los?

Tobicaster 13. Nov 2007 00:03

Re: Lauftext - Label immer auf Mindestgröße
 
Schon erledigt :)
Danke für eure Hilfe! Der Thread kann geschlossen werden


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:20 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