Autor |
Beitrag |
No0B
      
Beiträge: 62
|
Verfasst: Fr 02.04.10 12:23
Guten, immer noch mein Problem mit der senkrechten laufschrift in Delphi.
Hab ne externe txt Datei die ich gerne anzeigen lassen möchte habs mit nem string (TStrinvaluelist) versucht Timer und label sind drin. Funzt aber net.
Vielleicht hat ja jemand etwas in der Richtung gemacht und hat nen Code für mich.
Geht das auch ohne string ? Nur mit Timer und Label?
Hier mal der Code:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80:
| unit Unit2;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, jpeg, ExtCtrls, MMSystem, MPlayer, Buttons, WebAdapt, WebComp ;
type TForm2 = class(TForm) Button1: TButton; Timer1: TTimer; Label1: TLabel; StringsValuesList1: TStringsValuesList; procedure Button1Click(Sender: TObject); procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Timer1Timer(Sender: TObject);
private public end;
var Form2: TForm2;
implementation
uses main;
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin close; end;
procedure TForm2.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ReleaseCapture; Perform(WM_SYSCOMMAND, $F012, 0); end; procedure TForm2.Timer1Timer(Sender: TObject); begin Label1.Top := Label1.Top - 30
end;
type TForm1 = class(TForm) Timer1: TTimer; procedure Timer1Timer(Sender: TObject); private public end;
var Form1: TForm1;
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject); begin Form2.AlphaBlend:=True; Form2.AlphaBlendValue:=Form1.AlphaBlendValue - 5; if Form2.AlphaBlendValue = 0 then Close; end;
end. |
Moderiert von Narses: Code- durch Delphi-Tags ersetzt
|
|
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: Fr 02.04.10 13:26
Es kann auch gar nicht funktionieren, weil dein Code völliger Schwachsinn ist. Das kommt davon, wenn man alles zusammenkopiert. Ansonsten bitte ich darum, dass du "funzt net" etwas genauer beschreibst, also evtl. Fehlermeldung von Delphi sowie Soll- und Ist-Verhalten des Programms.
Die Frage kann man nur beantworten, wenn du genau beschreibst, was du vor hast. Grundsätzlich kann man mit einem Label nur eine Zeile anzeigen. Diese kann zwar umbrochen werden, aber es können keine eigenen Zeilenumbrüche gesetzt werden.
Eine Lösung wäre zum Beispiel, ein Memo zu bewegen. Oder für jede Zeile ein Label und dann alles bewegen, aber ich weiß nicht, in wie weit du dich schon mit OOP befasst hast.
Übrigens: Bitte fasse deinen Code in [ delphi] statt [ code]-Tags
Hier mal eine Idee, wie man es ungefähr machen könnte:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| const STEP_WIDTH = 5;
var zeile: array[0..2] of string; y: Integer = 20;
...
procedure TForm1.FormCreate(Sender: TObject); begin DoubleBuffered := True; zeile[0] := 'Ein'; zeile[1] := 'kleiner Text'; zeile[2] := 'zum Ausgeben...'; end;
procedure TForm1.Timer1Timer(Sender: TObject); var i: Byte; begin inc(y, STEP_WIDTH); Canvas.Rectangle(0, 0, ClientWidth - 1, ClientWidth - 1); for i := 0 to 2 do Canvas.TextOut(20, y + (Canvas.TextHeight('X') + 3) * i, zeile[i]); end; |
Das kann man dann noch mit dynamischen Arrays oder eben Stringlisten machen.
|
|
delphi10
      
Beiträge: 447
Erhaltene Danke: 2
W2K, XP, Vista64, Win7 64
RAD-Studio 2010
|
Verfasst: Fr 02.04.10 18:01
Jakob_Ullmann hat folgendes geschrieben : | Es kann auch gar nicht funktionieren, weil dein Code völliger Schwachsinn ist. Das kommt davon, wenn man alles zusammenkopiert. Ansonsten bitte ich darum, dass du "funzt net" etwas genauer beschreibst, also evtl. Fehlermeldung von Delphi sowie Soll- und Ist-Verhalten des Programms.
Die Frage kann man nur beantworten, wenn du genau beschreibst, was du vor hast. Grundsätzlich kann man mit einem Label nur eine Zeile anzeigen. Diese kann zwar umbrochen werden, aber es können keine eigenen Zeilenumbrüche gesetzt werden. |
Seit wann kann ein Label nur eine Zeile anzeigen?
Delphi-Quelltext 1:
| Label1.Caption := 'blalalalala' + #13#10 + 'qqqqqqqqq'; |
Ed: #13+#10 ist ein bewußt gesetzter Zeilenumbruch.
Also bei mir geht das.
_________________ Salus populi suprema lex esto
|
|
No0B 
      
Beiträge: 62
|
Verfasst: Fr 02.04.10 18:37
Das bringt mir aber nix, da die textfile auch ascii art enthällt. Wäre also net schlecht wenns schon formartiert angezeigt wird.
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Fr 02.04.10 18:46
und? brauchst ja nur die ascii-art in eine Stringliste zu laden und die dann zeilenweise mit dem #10#13 in dein label rüberkopieren. wobei natürlich es eleganter wäre wenn du deinen Text in eine Stringlist einliest und dann selbst zeichnen würdest auf eine paintbox zb.
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
Jakob_Ullmann
      
Beiträge: 1747
Erhaltene Danke: 15
Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
|
Verfasst: Sa 03.04.10 14:11
delphi10: Komisch, hatte das so in Erinnerung, dass das bei Labels nicht ging. Dann wäre das natürlich einfach.
NnoOB: Wo ist das Problem? Wie es aussieht, interpretiert das Label ja #13#10 korrekt und sollte damit doch alles darstellen können, was sich so in einer Textdatei befindet.
|
|
|