Последняя версия DataExpress 3 beta от 7 декабря 2019 года.
Изображение Скачать | Изображение Что нового?
См. также: Энциклопедия DX | Форум на develop-soft | Песочница
ИзображениеИзображениеИзображение

Размер кнопок таблицы

Все о том как сделать что-то с помощью скриптов.
Аватара пользователя
Гocть
Эксперт
Сообщения: 1586
Зарегистрирован: Пн ноя 27, 2017 8:02 am
Поблагодарили: 9 раз

Размер кнопок таблицы

Сообщение Гocть » Вт июл 17, 2018 9:56 pm

Имеются сет из кнопок TSpeedButton и их родитель (пока неопределенного класса, но думаю это не важно). К ним прицепил дополнительную кнопочку, но никак не получается автоматически выставлять размер. Каким способом (обходным путем) можно заполучить это значение?:
размер кнопок.jpg
размер кнопок.jpg (33.54 КБ) 499 просмотров

и если я правильно понимаю их нужно указывать здесь?:

Код: Выделить всё

 TSpeedButton.Constraints.MinHeight:=?;
 TSpeedButton.Constraints.MinWidth:=?; 
Фрилансер. Разработка на заказ. Консультирование.

Аватара пользователя
Гocть
Эксперт
Сообщения: 1586
Зарегистрирован: Пн ноя 27, 2017 8:02 am
Поблагодарили: 9 раз

Re: Размер кнопок таблицы

Сообщение Гocть » Вт июл 17, 2018 10:55 pm

Докопался самостоятельно: это нужно искать не в Form_Create а поближе к OnPaint таблицы/запроса.
авторазмер кнопок.jpg
авторазмер кнопок.jpg (9.3 КБ) 493 просмотра
Фрилансер. Разработка на заказ. Консультирование.

Аватара пользователя
admin
Разработчик
Сообщения: 4630
Зарегистрирован: Пн мар 14, 2016 11:32 am
Откуда: Ленинградская
Благодарил (а): 20 раз
Поблагодарили: 95 раз

Re: Размер кнопок таблицы

Сообщение admin » Ср июл 18, 2018 8:28 am

Можно так в Form_Create:
Debug(TSpeedButton(TCustomControl(dxGrid1.Components[0]).Components[0]).Height);

Аватара пользователя
Гocть
Эксперт
Сообщения: 1586
Зарегистрирован: Пн ноя 27, 2017 8:02 am
Поблагодарили: 9 раз

Re: Размер кнопок таблицы

Сообщение Гocть » Ср июл 18, 2018 8:58 am

Тоже крутился вокруг этой конструкции далее за Form_Create все равно сбивается:
кнопки.JPG
кнопки.JPG (12.37 КБ) 479 просмотров

Решил так:

Код: Выделить всё

var Bn:TSpeedButton;   
 
procedure SetBnSize(Sender: TObject);
begin
  Bn.Constraints.MinHeight:=TControl(Sender).Height;
  if Trim(Bn.Caption)='' then
  Bn.Constraints.MinWidth:=TControl(Sender).Height else
  Bn.Constraints.MinWidth:=Bn.Canvas.TextWidth('W'+Bn.Caption+'W')+16; // 16 ширина глифа + отступы
end; 

///////
procedure CreateBn;
var
  QG:TdxQueryGrid;
  Pb:TComponent;
  Bn:TSpeedButton;

begin
   QG:=Self.Queries[query];
   Pb:=QG.Components[0];
      //
   TCustomControl(Pb).OnPaint:=@SetBnSize;
      //
   Bn:=TSpeedButton.Create(Pb);
        //
end;   


Хотя да, если подумать, можно этот размер сохранять в параметрах формы и не мучить OnPaint.
Фрилансер. Разработка на заказ. Консультирование.

Аватара пользователя
Гocть
Эксперт
Сообщения: 1586
Зарегистрирован: Пн ноя 27, 2017 8:02 am
Поблагодарили: 9 раз

Re: Размер кнопок таблицы

Сообщение Гocть » Ср июл 18, 2018 1:29 pm

Вроде что то получилось: dxdb_icon демка
Осталось придумать как вклиниться между существующих кнопок. А то кнопка как то неестественно смотрится за всеми остальными и ее бы установить рядом с "добавить".
Дублирование.jpg
Дублирование.jpg (96.13 КБ) 457 просмотров
Фрилансер. Разработка на заказ. Консультирование.