Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zeilenumbruch im Speedbutton (https://www.delphipraxis.net/73944-zeilenumbruch-im-speedbutton.html)

TRF 25. Jul 2006 23:22


Zeilenumbruch im Speedbutton
 
Also ich such jetzt seit über ner stunde ne möglichkeit um einen zeilenumbruch in einen speedbutton einzufügen.

alles was ich find sind immer wieder die aussagen das das geht, aber nirgens WIE!

Kann mir da jemand weiterhelfen?

Wie es in nem normalen Button geht oder in nem Label weiss ich bereits, dies jedoch läßt sich nicht auf einen speedbutton anwenden. Hoffe auf schnelle antwort, Danke schonmal :-D

PS: ich probiers grad mit Delphi6 aufm Laptop, in ner woche sitz ich wieder an meinem PC mit delphi7...

Luckie 25. Jul 2006 23:31

Re: Zeilenumbruch im Speedbutton
 
Wenn du weißt, wie es mit einem Label geht, dann frage ich mich, warum du es nicht einfach mal genauso bei einem SpeedButton ausprobiert hast? :?

Delphi-Quellcode:
SpeedButton1.Caption := 'erste Zeile' + #13#10 + 'zweite Zeile';

TRF 25. Jul 2006 23:35

Re: Zeilenumbruch im Speedbutton
 
Also ich nutze eine vom SpeedButton abgeleitete variante, den OvalButton. Der hat allerdings komplett dieselben Eigenschaften wie der Speedbutton (zumindest soll es so sein, aber man weiss ja nie)

Wenn ich es nun so probiere (und das habe ich bereits mehrfach getan) kommt kein Umbruch, sondern die Zeichen für unbekannte Zeichen, also 2 solche Balken...

ich verzweifel hier ein wenig...weil mir das grad nen komplettes programm versauen könnte...

edit:ok, ich habs grad mit nem richtigen speedbutton probiert (vertrauen ist gut...frühere kontrolle wäre besser gewesen) damit gehts...damit steht fest das dieser ovalbutton NICHT 100% die eigentschaften des speedbutton umsetzt.

Ich hab die Komponente von der Seite www.delphi-fundgrube.de, da steht indeutig das das ding funzen soll wie ein speedbutton. Kein wunder das das nicht geht...

kann ich evtl. ein label erzeugen das genauso aussieht wie solch ein ovaler button? dann könnte ich das so lösen und müsste mich nicht weiter mit der fehlenden funktionaltität dieses Ovalbuttons rumärgern...

Luckie 25. Jul 2006 23:41

Re: Zeilenumbruch im Speedbutton
 
Zitat:

Zitat von TRF
Also ich nutze eine vom SpeedButton abgeleitete variante, den OvalButton.

Ja, das wäre mal ganz gut zu wissen gewesen schon im ersten Posting.

Ist der Quellcode dabei, dann kannst du das ja noch selber ändern. Ansonsten einfach mal den Autor anschreiben und nachfragen.

TRF 25. Jul 2006 23:46

Re: Zeilenumbruch im Speedbutton
 
Naja ich hab halt zu sehr darauf vertraut das die funktionen wirklich gleich sind. Deshalb fragte ich nach dem speedbutton und nicht nach dem unbekannten ovalbutton :?

der quellcode ist dabei, aber was genau muss ich da ändern? ganz sooo tief steck ich dann doch nicht in der materie...

ich will jetzt nicht den ganzen quellcode hier kopieren, ist ziemlich lang. vllt kannst du dir ja das ding bei http://www.pics-software.de/compon.htm runterladen und dir das so anschauen.

hoffe ich geh dir nicht zu sehr auf die nerven :roll:

TRF 26. Jul 2006 15:35

Re: Zeilenumbruch im Speedbutton
 
huhu...keiner ne idee wie ich das einbinden kann? :)

freak4fun 26. Jul 2006 15:46

Re: Zeilenumbruch im Speedbutton
 
Vielleicht hilft dsdt.info?

messie 26. Jul 2006 17:56

Re: Zeilenumbruch im Speedbutton
 
Zitat:

Zitat von freak4fun
Vielleicht hilft dsdt.info?

ich habe es jedenfalls mit einem TButton nicht zweizeilig hinbekommen wie dort beschrieben.

@ TRF:

ich habe mal kurz in die OvalBtn.pas reingeschaut. Dort findest Du
Delphi-Quellcode:
{ Caption zeichnen }
    if Caption<>'' then begin
      {Position ermitteln}
      TextLeft:=(width-TextWidth(Caption)) shr 1;
      if Assigned(FGlyph) and (FNumGlyphs>0) and (FLayout=blGlyphRight) then
        TextLeft:=Dest.Left-TextWidth(Caption)-FSpacing;
      if Assigned(FGlyph) and (FNumGlyphs>0) and (FLayout=blGlyphLeft) then
        TextLeft:=Dest.Left+outWidth+FSpacing;
      TextTop:=(height-TextHeight(Caption)) shr 1;
      if Assigned(FGlyph) and (FNumGlyphs>0) and (FLayout=blGlyphTop) then
        TextTop:=Dest.Top+outHeight+FSpacing;
      if Assigned(FGlyph) and (FNumGlyphs>0) and (FLayout=blGlyphBottom) then
        TextTop:=Dest.Top-TextHeight(Caption)-FSpacing;
      if FState=-1 then begin
        inc(TextTop);
        inc(TextLeft);
      end;
      {Text ausgeben}
      if FTransparent then
        Brush.Style:=bsClear
      else begin
        Brush.Style:=bsSolid;
        Brush.Color:=Color;
      end;
      if FState=-1 then
        { verbleibende Up-Reste löschen }
        FillRect(Rect(TextLeft,
                      TextTop,
                      TextLeft+TextWidth(Caption),
                      TextTop+TextHeight(Caption)))
      else
        { verbleibende Down-Reste löschen }
        FillRect(Rect(TextLeft+1,
                      TextTop+1,
                      TextLeft+1+TextWidth(Caption),
                      TextTop+1+TextHeight(Caption)));
      TextR:=Rect(TextLeft,
                  TextTop,
                  TextLeft+TextWidth(Caption),
                  TextTop+TextHeight(Caption));
      StrPCopy(outText,Caption);
      if not Enabled then
        Font.Color:=clGrayText;
      DrawText(Handle,
               outText,
               length(Caption),
               TextR,
               DT_SingleLine);
    end;
Entscheidend dürfte das DT_SingleLine sein, was eine einzeilige Ausgabe erzwingt. Das ließe sich wahrscheinlich durch DT_WORDBREAK ersetzen. Dann kann es aber zu Darstellungsproblemen kommen, denn die Kompo orientiert sich ausschließlich an der Breite, nicht aber an der Höhe des Ausgabetextes.

Grüße, Messie

Klaus01 26. Jul 2006 18:27

Re: Zeilenumbruch im Speedbutton
 
Liste der Anhänge anzeigen (Anzahl: 1)
könnte es daran liegen?

Delphi-Quellcode:
DrawText(Handle,
               outText,
               length(Caption),
               TextR,
               DT_SingleLine);
->

Delphi-Quellcode:
DrawText(Handle,
               outText,
               length(Caption),
               TextR,
               DT_Wordbreak);
habe die geänderte OvalBtn.pas mal angehängt.

http://support.borland.com/thread.js...=1476&tstart=0

Grüße
Klaus

[edit] zu spät gesehen, das messie schon etwas dazu geschrieben hatte [/edit]

lizardking 26. Jul 2006 20:12

Re: Zeilenumbruch im Speedbutton
 
Zitat:

Zitat von Klaus01
Delphi-Quellcode:
DrawText(Handle,
               outText,
               length(Caption),
               TextR,
               DT_Wordbreak);
habe die geänderte OvalBtn.pas mal angehängt.

Im TextR wird zusaetzlich noch die Hoehe und Breite des Zeichenbereichs gesetzt. Ergo: Er bricht dann zwar um, aber man sieht die zweite Zeile einfach nicht. An der Stelle muss also auch noch was geaendert werden. Dann muesste es aber funktionieren.

Gruesse,

Lizzy


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