AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Caption vertikal zentrieren

Ein Thema von MarvinM · begonnen am 15. Jan 2009 · letzter Beitrag vom 18. Jan 2009
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.016 Beiträge
 
Delphi 12 Athens
 
#11

Re: Caption vertikal zentrieren

  Alt 18. Jan 2009, 17:29
du übergibst einfach nur das Canvas, worauf zu den Text zeichnen willst (der Font und sonstiges würde dann aus diesem Canvas ausgelesen) und natürlich noch den zu messenden Text.
Delphi-Quellcode:
// dieses
i := TBitBtn(Sender).Canvas.TextHeight('derText')

// würde dann so aussehn
i := TextHeightEx(TBitBtn(Sender).Canvas, 'derText');
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#12

Re: Caption vertikal zentrieren

  Alt 18. Jan 2009, 17:35
Hallo,

mit der API-Funktion MSDN-Library durchsuchenDrawTextEx kann man auch messen:

Delphi-Quellcode:
var
  s : string;
  R : TRect;
begin
  s := 'Dies ist ein Text,'#10'der sich über drei Zeilen erstreckt.'#10'Dies ist die letzte Zeile.';

  ZeroMemory(@R, SizeOf(R));
  DrawTextEx(Canvas.Handle, PChar(s), Length(s), R, DT_CALCRECT, nil);

  ShowMessage (Format('cx=%d, cy=%d', [R.Right, R.Bottom]));
end;
Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von MarvinM
MarvinM

Registriert seit: 24. Jul 2006
94 Beiträge
 
#13

Re: Caption vertikal zentrieren

  Alt 18. Jan 2009, 17:44
Das müsste dann ja so im OnDrawButton-Event aussehen:
TextHeightEx(TBitBtn(Sender).Canvas, TBitBtn(Sender).Caption); Bei TBitBtn(Sender).Canvas hat der Compiler ein Problem "undefinierter Bezeichner".

Was mir leider immernoch nicht klar ist, ist was ich mit dem Rückgabewert (TSize) der Funktion zu tun habe
Mfg Marvin

Carpe Diem! - Genieße den Tag! - [gr. Horaz]
> Meine Homepage - http://www.prettyprograms.de <
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.016 Beiträge
 
Delphi 12 Athens
 
#14

Re: Caption vertikal zentrieren

  Alt 18. Jan 2009, 17:53
Dafür müßter es es doch erstmal zeichen, um die größe zu bekommen, aber er möchte ja erst messsen, um an der richtigen Stelle zu zeichnen.

für TBitBtn(Sender).Canvas mußt du natürlich das Canvas angeben, worauf du zeichnest (wußte ja nicht wie deine Zeichenroutine bisher aussieht)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von MarvinM
MarvinM

Registriert seit: 24. Jul 2006
94 Beiträge
 
#15

Re: Caption vertikal zentrieren

  Alt 18. Jan 2009, 18:02
Ich sollte vielleicht erwähnen, dass meine Canvas-Kenntnisse nicht der Brüller sind

Ich denke mal, dass ich die Rückgabewerte deiner beiden Funktionen in ButtonGroup1.Canvas.TextOut als Parameter packen muss, richtig?

Das geht mit einer Zeile auch wunderbar, bei zwei ignoriert er dann einfach den Umbruch.
Mfg Marvin

Carpe Diem! - Genieße den Tag! - [gr. Horaz]
> Meine Homepage - http://www.prettyprograms.de <
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.016 Beiträge
 
Delphi 12 Athens
 
#16

Re: Caption vertikal zentrieren

  Alt 18. Jan 2009, 18:26
Delphi-Quellcode:
var ts: TSize;
  S: String;

S := 'derText';

ts := DrawTextEx(ButtonGroup1.Canvas, S);
ButtonGroup1.Canvas.TextOut(X - ts.cx div 2, Y - ts.cy div 2, S);
hierbei wären X und Y die Position, an welcher der Text zentriert gezeichnet werden soll
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von MarvinM
MarvinM

Registriert seit: 24. Jul 2006
94 Beiträge
 
#17

Re: Caption vertikal zentrieren

  Alt 18. Jan 2009, 18:43
Jetzt ignoriert er leider jedlichen Zeilenumbruch.

Wie kann ich denn in der Methode sagen, dass er das Bild an die ursprüngliche Stelle und den Text in der Mitte 5 oder 10 Pixel daneben zentriert. Ich hatte es mit x := ButtonGroup1.Images.Width + 15; probiert, das hat allerdings nicht funktioniert. Y hab ich unter Kontrolle!

Ich hätte nie gedacht, dass das so kompliziert ist...
Mfg Marvin

Carpe Diem! - Genieße den Tag! - [gr. Horaz]
> Meine Homepage - http://www.prettyprograms.de <
  Mit Zitat antworten Zitat
Benutzerbild von MarvinM
MarvinM

Registriert seit: 24. Jul 2006
94 Beiträge
 
#18

Re: Caption vertikal zentrieren

  Alt 18. Jan 2009, 20:31
Vielen, vielen Dank für Eure Hilfe, aber das wird mir ein wenig zu komplex. Ich werde die Anzahl der Buttons reduzieren, sodass ich die einzelne Spalte breiter machen kann.

Danke nocheinmal!
Mfg Marvin

Carpe Diem! - Genieße den Tag! - [gr. Horaz]
> Meine Homepage - http://www.prettyprograms.de <
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:10 Uhr.
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