![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Узнать текущую ширину edit'а
Vincero © (2010-04-07 21:46:00)Привет всем!
Как узнать текущую ширину edit'а (точнее - его области для текста) в пикселях?
Мне нужно знать, какой максимальный Canvas.TextWidth он может показать на экране.
Andy BitOff (2010-04-08 09:52:00) [1]
> Vincero (07.04.10 23:30) [7]
MinimizeName ищи. Только Edit действительно для этих целей не подходит.
> Amoeba_ (07.04.10 23:53) [8]
> И что может получиться при редактировании такой строки?
При onEnter
Edit.Text := переменная_хранящая_путь.
При onExit
переменная_хранящая_путь := Edit.Text;
Edit.Text := MinimizeName(...);
Но, имхо, "Edit действительно для этих целей не подходит"
Игорь Шевченко (2010-04-08 00:20:00) [2]Vincero (07.04.10 23:30) [7]
А точно ли Edit нужен ? Может, достаточно StaticText ?
Amoeba_ (2010-04-07 23:53:00) [3]
> чтобы она принимала укороченный вид (C:\...\All Users\)
> в зависимости от размеров Edit’а
И что может получиться при редактировании такой строки?
Vincero (2010-04-07 23:30:00) [4]В терминах задачи нужно, чтобы строка с путем к папке (например, C:\Documents\All Users\) умещалась в видимой области Edit’а. В противном же случае – чтобы она принимала укороченный вид ( C:\...\All Users\) в зависимости от размеров Edit’а.
Игорь Шевченко (2010-04-07 23:24:00) [5]а что в итоге надо ? (только не в терминах функций и эдитов, а в терминах задачи)
Vincero (2010-04-07 23:20:00) [6]ClientWidth не дал нужного результата. Откопал в интернете следующую ф-ию, но, кажется, он все равно не учитывает длину моего Edit'а.
Может, найдете причину...
function MinimizePath(Edit: TEdit; const Path: String): String;
var
TextRect: TRect;
P: PChar;
DC: HDC;
begin
Result := '';
DC := GetDC(Edit.Handle);
if DC > 0 then
try
P := StrAlloc(Length(Path) + 5);
try
StrPCopy(P, Path);
TextRect := Rect(0, 0, Edit.ClientWidth, 255);
DrawTextEx(DC, P, -1, TextRect, DT_MODIFYSTRING + DT_CALCRECT + DT_PATH_ELLIPSIS, nil);
Result := P;
finally
StrDispose(P);
end;
finally
ReleaseDC(Edit.Handle, DC);
end;
end;
Vincero (2010-04-07 22:07:00) [7]Вроде бы помогло. Спасибо!
Игорь Шевченко (2010-04-07 22:04:00) [8]
> Мне нужно знать, какой максимальный Canvas.TextWidth он
> может показать на экране
От шрифта зависит
Vincero (2010-04-07 21:57:00) [9]
> Jeer © (07.04.10 21:56) [1]
Сейчас попробую.
Jeer (2010-04-07 21:56:00) [10]*.ClientWidth не помогает ?