Einzelnen Beitrag anzeigen

Zottel
(Gast)

n/a Beiträge
 
#9

Re: TEdit über einem Dezimalpunkt zentrieren

  Alt 28. Feb 2006, 10:06
Hi Messie!

Nimm die Breite des textes bis zum Mittelpunkt des Punktes.
also (Textbreite bis punkt) + (halbe punktbreite)

dann denk dir eine position aus, wo der punkt immer stehen soll, also z.b. an Y=100 ;

dieses Y-Textbreite und dann aufs canvas schreiben.
hmmm.. war warcheinlich nicht so super beschrieben. Vielleicht hilft der codeschnipsel weiter. hab das ganze an einer Listbox ausprobiert.

Delphi-Quellcode:
procedure TForm1.LBDrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
var
  iPunktMittel:Integer;
  iBreiteBisPunktMittel:Integer;
  iPunktSollPosition:Integer;
begin
  iPunktMittel:=LB.Canvas.TextWidth(copy(lb.Items[index],1,pos('.',lb.Items[index])))
               -LB.Canvas.TextWidth(copy(lb.Items[index],1,pos('.',lb.Items[index])-1));
  iBreiteBisPunktMittel:=LB.Canvas.TextWidth(copy(lb.Items[index],1,pos('.',lb.Items[index])-1))+trunc(iPunktMittel/2);
  iPunktSollPosition:=100;
  LB.Canvas.TextOut(iPunktSollPosition-iBreiteBisPunktMittel,Rect.Top,lb.Items[index]);
end;
vielleicht hilfts

//Edit: formatierung geändert
  Mit Zitat antworten Zitat