Форум: "Начинающим";
Текущий архив: 2011.02.13;
Скачать: [xml.tar.bz2];
ВнизКак узнать длину надписи на кнопки в пикселах? Найти похожие ветки
← →
12 © (2010-11-22 15:12) [0]Для компонента, имеющего canvas - Canvas.TextWidth("");
TButton же не от TGraphicControl, имеющего канву
Навскидку придумал рядом завести метку и по ней померить
L := TLabel.Create(pnlPlaceButtonWindow);
L.Parent := pnlPlaceButtonWindow;
L.Caption := btn1.Caption;
L.Font := btn1.Font;
ShowMessage( IntToStr( L.Canvas.TextWidth(L.Caption) ) );
но что-то это как-то криво кажется
или торможу или одно из трех..
КАК?
← →
clickmaker © (2010-11-22 15:37) [1]если шрифт тот-же, что и у формы, то достаточно Form.Canvas
← →
Юрий Зотов © (2010-11-22 15:38) [2]Разные контролы могут иметь разный шрифт, поэтому надо делать по самой кнопке.
GetDC(Button1.Handle)
try
определяем ширину текста вызовом DrawText с параметром DT_CALCRECT
finally
ReleaseDC(...)
end;
http://www.google.ru/search?hl=ru&source=hp&q=drawtext+dt_calcrect&lr=&aq=1&aqi=g3&aql=&oq=DrawText+DT_&gs_rfai=
← →
12 © (2010-11-22 16:03) [3]Спасибо!
← →
12 © (2010-11-22 16:21) [4]вопросы задаю, прежде чем подумаю..
вот еще, если с контрлом + клик попрыгать
function TCanvas.TextExtent(const Text: string): TSize;
begin
RequiredState([csHandleValid, csFontValid]);
Result.cX := 0;
Result.cY := 0;
Windows.GetTextExtentPoint32(FHandle, PChar(Text), Length(Text), Result);
end;
function TCanvas.TextWidth(const Text: string): Integer;
begin
Result := TextExtent(Text).cX;
end;
итого, ежели перепишу так:
function TMainForm.WidthCaptionBtn(B: TBitBtn): Integer;
var
R: TSize;
begin
Windows.GetTextExtentPoint32(B.Handle, PChar(B.Caption), Length(B.Caption), R);
Result := R.cx;
end;
наверное ничего страшного не будет?
← →
clickmaker © (2010-11-22 16:39) [5]> GetTextExtentPoint32(B.Handle
да почему B.Handle? там HDC нужен
← →
12 © (2010-11-22 16:46) [6]ну да, т.е.
Windows.GetTextExtentPoint32(GetDC(B.Handle), PChar(B.Caption), Length(B.Caption), R);
но не работает что-то
придется как ЮЗ сказал делать
← →
clickmaker © (2010-11-23 11:11) [7]> Windows.GetTextExtentPoint32(GetDC(B.Handle), PChar(B.Caption)
> , Length(B.Caption), R);
> но не работает что-то
Win32Check(GetTextExtentPoint32())
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.02.13;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c