Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

GetCharWidth [D7, XP]


Quattro ©   (2006-05-15 15:00:00) 

Господа! Подскажите пожалуйста вот почему эта функция все время возвращает мне 14??


 DC:HDC;
 Buff:Array [0..2] of integer;

procedure TForm1.FormCreate(Sender: TObject);
begin
DC:=GetDC(Edit1.Handle);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
x:Integer;
begin
GetCharWidth(DC,0,1,Buff);
Label1.Caption:=FloatToStr(Buff[1]);
end;


Игорь Шевченко   (2006-05-15 15:36:00) [1]

Перед end; в [3] можно добавить строчку ReleaseDC(Edit1.Handle, DC);


Джо   (2006-05-15 15:27:00) [2]

> [4] Ega23 ©   (15.05.06 15:12)
> Но судя по [3] - таки является. :о)

Судя по  [3], как раз НЕ является :)


MetalFan   (2006-05-15 15:22:00) [3]

да, а еще интересная приписка к GetCharWidth:
...GetCharWidth cannot be used on TrueType fonts. To retrieve character widths for TrueType fonts, use GetCharABCWidths...
у Вас там случаем не трутайп шрифт?


MetalFan   (2006-05-15 15:19:00) [4]

простите... а чем
...Canvas.TextWidth('m')
не подходит?


Ega23   (2006-05-15 15:12:00) [5]


> ээ...а разве нет?...тогда что нужно указать?


Я не в курсе. Сомнения у меня по этому поводу. Смотреть надо. Плохо в WinAPI разбираюсь, к своему стыду.
Но судя по [3] - таки является. :о)


Quattro   (2006-05-15 15:07:00) [6]

ээ...а разве нет?...тогда что нужно указать?


Игорь Шевченко   (2006-05-15 15:07:00) [7]

procedure TForm1.Button1Click(Sender: TObject);
var
Buff:Array [0..2] of integer;
DC:HDC;
begin
DC:=GetDC(Edit1.Handle);
GetCharWidth(DC,Ord('m'),Ord('m'),Buff);
Label1.Caption:=IntToStr(Buff[0]);
end;


Ega23   (2006-05-15 15:04:00) [8]

Разве TEdit.Handle является указателем на HDC?


Наверх

Титульная страница Поиск, карта сайта Написать письмо