vitaly_l писал(а):lordgray писал(а): Конечно, не так красиво, но... Я не на выставку пишу
Не могу сдержаться, всё же дам художественный совет
Я ЗА конструктивную критику.
При разработке формы, была такая мысль, сделать все Edit одной ширины, но:
1) Label'ы локализуются из файлов локализации, т.е. невозможно предугадать ширину текста, надо ориентироваться на самый широкий. Конечно, программно пройтись по всем, и найти самый широкий, не проблема, но:
2) Есть Edit, где цифры доходят до 64000000000, т.е. довольно широкий, но при этом лабел у него заведомо узкий, хоть на каком языке.
В итоге, самый широкий лабел + самый широкий Эдит, форму придется растянуть очень существенно. А расчет на то, что рядом с этой формой открывается PDF файл. Тогда он будет очень мелким, или нужен второй монитор, или постоянно переключаться между приложениями.
Куда не кинь, всюду клин
Но за участие и совет, спасибо! Может еще будут какие предложения? С удовольствием вылушаю.
Добавлено спустя 1 час 1 минуту 51 секунду:И так, докопал до следующего: при создании наследников WinControl, для определения изначального размера, вызывается
- Код: Выделить всё
procedure gtk_widget_size_request(widget:PGtkWidget; requisition:PGtkRequisition); cdecl; external gtklib;
Т.е. в моем случае, берется из библиотеки Gtk2 (libgtk-x11-2.0.so)
Чтобы изменить ситуацию, можно перекрыть в protected у наследников TWinControl
- Код: Выделить всё
procedure CalculatePreferredSize(var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean); override;
Все, на этом и остановлюсь. Все равно, у меня Edit с несколькими перекрытыми методами, еще один, жизнь не осложнит.
- Код: Выделить всё
procedure TMyDBEdit.CalculatePreferredSize(var PreferredWidth, PreferredHeight: integer; WithThemeSpace: Boolean);
begin
inherited CalculatePreferredSize(PreferredWidth, PreferredHeight, WithThemeSpace);
{т.к. у TEdit нет Canvas, и чтоб не заморачиваться с "Создан/Не создан" Handle компонента, взял TextHeight главной формы.
Может и не совсем по феншую, но работает так, как я хотел}
PreferredHeight := Application.MainForm.Canvas.TextHeight('9,9') + 8;
end;
Спасибо всем участвовавшим

У вас нет необходимых прав для просмотра вложений в этом сообщении.