Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Lazarus: получить координаты заголовка TabSheet  [new]
Док
Member

Откуда: Казань
Сообщений: 6163
Мужики, пытаюсь решить проблему.

У лазаревского PageControl авторы по непонятным мотивам кастрировали OnDrawTab.

Как можно получить координаты(или прямоугольник выделения) заголовка активной вкладки?
=================
Док.
3 янв 19, 09:30    [21777813]     Ответить | Цитировать Сообщить модератору
 Re: Lasarus: получить координаты заголовка TabSheet  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3227
Док,

чаще всего там что-то кастрировано в угоду кросс-платформенности. lcl как бы кроссплатформенный целиком, в отличие от vcl. по теме ничего не скажу, к сожалению.
3 янв 19, 11:50    [21777837]     Ответить | Цитировать Сообщить модератору
 Re: Lasarus: получить координаты заголовка TabSheet  [new]
pit_alex
Member

Откуда: Kharkov
Сообщений: 683
Док,

относительно самого PageControl

var
   r: TRect;
begin
  r := PageControl1.TabRect(PageControl1.ActivePageIndex); 
end;
3 янв 19, 11:54    [21777839]     Ответить | Цитировать Сообщить модератору
 Re: Lasarus: получить координаты заголовка TabSheet  [new]
Док
Member

Откуда: Казань
Сообщений: 6163
pit_alex
относительно самого PageControl

О! Сенькаю много раз !!!

Правда, непонятно, почему R.Top дает на 22 px выше, чем есть фактически, но это уже детали.
3 янв 19, 14:36    [21777894]     Ответить | Цитировать Сообщить модератору
 Re: Lasarus: получить координаты заголовка TabSheet  [new]
pit_alex
Member

Откуда: Kharkov
Сообщений: 683
Док,

у меня r.Top дает как раз -22
3 янв 19, 15:51    [21777917]     Ответить | Цитировать Сообщить модератору
 Re: Lasarus: получить координаты заголовка TabSheet  [new]
Док
Member

Откуда: Казань
Сообщений: 6163
pit_alex
у меня r.Top дает как раз -22

и я о том же, поэтому приходится делать поправку
procedure TForm1.PgCtrlChange(Sender: TObject);
var R: TRect;
begin
  if PgCtrl.PageCount = 0 then Exit;

  R:= PgCtrl.TabRect(PgCtrl.ActivePageIndex);
  Self.Caption:= Format('Left = %d | Top = %d | PageIndex = %d | Caption = %s',
    [R.Left + offset + PgCtrl.Left,
     R.Top + offset +  PgCtrl.Top,
     PgCtrl.ActivePageIndex,
     PgCtrl.ActivePage.Caption]);
end; 


К сообщению приложен файл. Размер - 19Kb
3 янв 19, 16:05    [21777923]     Ответить | Цитировать Сообщить модератору
 Re: Lasarus: получить координаты заголовка TabSheet  [new]
Док
Member

Откуда: Казань
Сообщений: 6163
Док
приходится делать поправку

соответственно
const offset: Integer = 22; 
3 янв 19, 16:06    [21777927]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: получить координаты заголовка TabSheet  [new]
pit_alex
Member

Откуда: Kharkov
Сообщений: 683
Док,

хз, можно конечно в исходниках порыться, но ..... :-)
4 янв 19, 10:26    [21778276]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: получить координаты заголовка TabSheet  [new]
Док
Member

Откуда: Казань
Сообщений: 6163
pit_alex,

TPageControl в лазарусе - такой шлак, который кто-то взялся делать, но бросил на полпути, добавив минимальный функционал для Qt. Давно чешутся руки взяться за него, но ни времени, ни знаний не хватает.
5 янв 19, 18:04    [21778829]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: получить координаты заголовка TabSheet  [new]
pit_alex
Member

Откуда: Kharkov
Сообщений: 683
Док,

пробовал поднять QT и GTK3 на Linux, ничего хорошего не получилось, QT вообще не победил, а GTK3 полный отстой, на винде непробовал
8 янв 19, 10:06    [21779769]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: получить координаты заголовка TabSheet  [new]
Док
Member

Откуда: Казань
Сообщений: 6163
pit_alex
QT вообще не победил, а GTK3 полный отстой, на винде непробовал

ты имеешь ввиду обсуждаемый компонент?
8 янв 19, 23:02    [21780131]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: получить координаты заголовка TabSheet  [new]
pit_alex
Member

Откуда: Kharkov
Сообщений: 683
Док,

нет полностью пересобрать лазаря
9 янв 19, 13:35    [21780517]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: получить координаты заголовка TabSheet  [new]
Док
Member

Откуда: Казань
Сообщений: 6163
pit_alex
полностью пересобрать лазаря

странно. Тут читал?

Кроме того, есть fpcupdeluxe, который 100%-но решает проблему установки Лазаря на любую платформу.
9 янв 19, 13:47    [21780533]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: получить координаты заголовка TabSheet  [new]
pit_alex
Member

Откуда: Kharkov
Сообщений: 683
Док,

ставиться он нормально, но при попытке пересобрать с другим LCL виджетом ничего хорошего не выходит
9 янв 19, 13:55    [21780541]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: получить координаты заголовка TabSheet  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 3508
Там просто поддержка GTK3 на каком-то зачаточном уровне. Глючит всё, что может глючить.
9 янв 19, 14:15    [21780564]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: получить координаты заголовка TabSheet  [new]
pit_alex
Member

Откуда: Kharkov
Сообщений: 683
Kazantsev Alexey,

угу, уже лет надцать как GTK3 у них в alpha версии :-(
9 янв 19, 14:20    [21780568]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: получить координаты заголовка TabSheet  [new]
Док
Member

Откуда: Казань
Сообщений: 6163
pit_alex
но при попытке пересобрать с другим LCL виджетом ничего хорошего не выходит

Если я правильно ошибаюсь, чтобы собиралось с другим виджетом, надо,чтобы виджет был установлен в ОСи.

Можно указать другой виджет для собираемого приложения, что делается при кросскомпиляции, но это уже другая песня.
9 янв 19, 14:46    [21780609]     Ответить | Цитировать Сообщить модератору
 Re: Lazarus: получить координаты заголовка TabSheet  [new]
pit_alex
Member

Откуда: Kharkov
Сообщений: 683
Док,

ставил все необходимые либы на Linux, но не QT не QT5 так и не завелся, для приложения тоже не удалось, так как все равно идет попытка пересборки все нужных модулей лазаря
9 янв 19, 14:51    [21780620]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить