Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.25;
Скачать: CL | DM;

Вниз

TComboBox - не могу использовать Canvas.   Найти похожие ветки 

 
TransparentGhost   (2004-07-14 10:44) [0]

Проблема такая : Пытаюсь перебрать все строки в TComboBox и определить наибольшую длину через TComboBox.Canvas.TextWidth(Items[Ii]). но получаю ошибку : Canvas does not drawing.
Пробовал создавать временный Canvas, но всё равно получаю ту же ошибку.
Как можно реализовать то что мне надо?


 
wicked ©   (2004-07-14 11:43) [1]

способ per rectum:
var dc: HDC;
   cbCanvas: TCanvas;
begin
.....
// где то там создали канвас
.....
 dc := GetDC(ComboBox.Handle);
 try
   cbCanvas.Handle := dc;
   // выполняем свой страшный перебор по items"ам комбобокса
   // но спрашиваем длину у cbCanvas
 finally
   cbCanvas.Handle := 0;
   ReleaseDC(ComboBox.Handle, dc);
   cbCanvas.Free; // опционально...
 end;
end;


а вообще то, если подумать, то в 99% случаев строка с наибольшей длиной и будет длиннее всех в пикселах.... поэтому нужно найти самую длинную строку и измерить её... для страховки добавить еще к пиксельной длине 20%...


 
TransparentGhost   (2004-07-14 11:58) [2]

Вот что у меня получилось, но в итоге без изменений.

Procedure TADQComboBox.SetDropDownWidthAuto;
Var
  Ii:Word;
  CnvWidth:Word;
  ItWidth:Word;
  TmpCnv:TCanvas;
  DC:HDC;
Begin
CnvWidth:=Width;
TmpCnv:=TCanvas.Create;
DC:=GetDC(Handle);
Try
  TmpCnv.Handle:=DC;
  TmpCnv.Font:=Font;
  For Ii:=0 to Items.Count-1 do
  Begin
     ItWidth:=Canvas.TextWidth(Items[Ii]);
     If ItWidth>CnvWidth then
        CnvWidth:=ItWidth;
  End;
Finally
  TmpCnv.Handle:=0;
  ReleaseDC(Handle,DC);
  TmpCnv.Destroy;
End;
SetDropDownWidth(CnvWidth);
End;


 
wicked ©   (2004-07-14 12:01) [3]


> ItWidth:=Canvas.TextWidth(Items[Ii]);

а это что такое?... у кого спросить про ширину надо?...


 
TransparentGhost   (2004-07-14 12:59) [4]

тормозимс :о)
Всё решилось.
Спасибо!!!



Страницы: 1 вся ветка

Текущий архив: 2004.07.25;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.04 c
14-1088737014
OlegEm
2004-07-02 06:56
2004.07.25
D3 дистрибут


4-1086605735
Andrew
2004-06-07 14:55
2004.07.25
Посылка сообщений...


1-1089584719
DateTimePicker
2004-07-12 02:25
2004.07.25
List


8-1084130960
Aldor
2004-05-09 23:29
2004.07.25
Как MCI рисует на DC?


3-1088665298
MORA
2004-07-01 11:01
2004.07.25
IB