Hallo ihr Lieben, ersteinmal ein Gesundes und Erfolgreiches Neues Jahr !
Zu meinem Anliegen:
An meiner Komponente werden Messbereiche in 10er Schritten angezeigt. Bei einer Darstellung von 145 x 45 z.B. ist das alles recht zusammengequetscht.
Wie kann man in der DrawScales Routine etwas einbauen, das Canvas auf jeden Fall den ersten und den letzten Wert anzeigt und dazwischen automatisch zu enge Bereiche weglässt ?
Hier der Codeauszug aus der .pas
Delphi-Quellcode:
procedure THixBarGraph.DrawScales;
const
Formatierung = '
%%.%df';
var
Value : double;
Y : Integer;
begin
Canvas.Pen.Color := clBlack;
Canvas.Font.Assign(FLabelingFont);
FFormatStr := Format(Formatierung, [FLabelingDecimals]);
if FKind = sbHorizontal
then
begin
case FLabelingStyle
of
lbsLabels :
begin
case FLabelingOrientation
of
lboAbove,
lboBelow :
begin
if FLabelingOrientation = lboAbove
then Y := 0
else Y := ClientHeight - canvas.TextHeight('
0');
Value := ValueMin;
while Value <= ValueMax
do
begin
Canvas.TextOut(OffsetLower + round((ClientWidth - (OffsetUpper + OffsetLower)) * (Value / (ValueMax - ValueMin)) - (canvas.TextWidth( Format(FFormatStr,[Value]))/2)), Y, Format(FFormatStr, [Value]));
Value := Value + LabelingGap;
end;
end;
else begin..............