Таки все по отрисовке GroupBox gtk2

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Владимир
постоялец
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Таки все по отрисовке GroupBox gtk2

Сообщение Владимир »

Господа-граждане! Нет отрисовки рамки в GroupBox, RadioGroup,CheckGroup
Кто-нить сталкивался?
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

а можно скриншоты с тем "как есть" и "как должно быть"?!
Владимир
постоялец
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Сообщение Владимир »

К сожалению сейчас не могу. Выглядит это так. В разработке кидаем на форму GroupBox - виден только Caption м обозначена рамка - самой рамки нет... Свойства типа Color не поддерживаются...
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

Владимир писал(а):К сожалению сейчас не могу. Выглядит это так. В разработке кидаем на форму GroupBox - виден только Caption м обозначена рамка - самой рамки нет... Свойства типа Color не поддерживаются...

в багрепорт его, со скришотами!
alexmai
постоялец
Сообщения: 106
Зарегистрирован: 02.02.2009 13:58:42

Сообщение alexmai »

Не только отрисовка GroupBox отсутствует под GTK2 под линукс
Этот вопрос уже обсуждался на форуме
в моем топике "Ничего не делают свойства Borderstyle и Bordericons в Linux"
viewtopic.php?f=5&t=4056&hilit=BorderIcons
Владимир
постоялец
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Сообщение Владимир »

Доброго! По отрисовке GroupBox - в моих приложениях не сильно волнует - написал функцию по отрисовке с использованием TBevel с параметрами GroupBox - работает!
Ваш топик не нашел - к сожалению.
p.s. ф-цию могу выложить - если интересно...

Добавлено спустя 18 минут 18 секунд:
в багрепорт это ушло?

Добавлено спустя 20 часов 27 минут 19 секунд:
На всякий пожарный выкладываю код отрисовки рамки GroupBox, чтобы хоть прилично выглядело...
Понятно, что должно работать и с TRadioGroup, и с TCheckGroup.
Использую TBevel
Результат - рамка ПОД GroupBox.Caption.

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

procedure TMainFrm.FormCreate(Sender: TObject);
var
i,l,w,t,h,fh:Integer;
nam:AnsiString;
FParent:TWinControl;
begin
//для создания bevel выясняем координаты и отцов всех GroupBox
for i:=0 to ComponentCount-1 do
 if Components[i] is TGroupBox then begin
 FParent:=(Components[i] as TGroupBox).Parent;
 l:=(Components[i] as TGroupBox).Left;
 w:=(Components[i] as TGroupBox).Width;
 t:=(Components[i] as TGroupBox).Top;
 h:=(Components[i] as TGroupBox).Height;
 fh:=(Components[i] as TGroupBox).Font.Height;
  //здесь вызвать ф-цию создания bevel как альтернативу отрисовки GroupBox
 CreateBevelNew(fParent,l,w,t,h,fh);
 end;
end;
//а вот и сама ф-ция
function TMainFrm.CreateBevelNew(fPar:TWinControl;l,w,t,h,f_h:Integer):Byte;
var
myBevel:TBevel;
begin
myBevel:=TBevel.Create(self);
 with myBevel do begin
 parent:=fPar;
 Left:=l;
 Width:=w;
 Top:=t+f_h+round(f_h/4);//здесь внимательно - высота шрифта в utf отрицательна!
 Height:=h-f_h-round(f_h/4);
 Shape:=bsFrame;
 Style:=bsLowered;
 Show;
 end;//with
CreateBevelNew:=0;//формально
end;

Жду критику...
0beron
новенький
Сообщения: 23
Зарегистрирован: 18.08.2012 19:32:10

Сообщение 0beron »

Здравствуйте все. Может немного не в тему...
Имеется БД SqLite3, а на форме CheckGroup
В программе делаю запрос и пытаюсь поменять названия чеков,
доступность и состояние взяв значения из БД

...
sqlIO.First;
for i := 0 to 7 do begin
CheckGroup.Controls[i].Caption := FieldValues['Cap'];
CheckGroup.Controls[i].Enabled := FieldValues['Enb'];
// Не работает никоим образом!!!!!!!!!!!!!!!!!
CheckGroup.Checked[i] := FieldValues['Chk'];
sqlIO.Next;
end;

Caption и Enabled работают на ура, проблемма с Chacked
В БД в этом поле все значения true - в CheckGroup
через один, меняю на false - то же самое...
Что делаю не так?

Lazarus 1.8.2 Linux Rosa KDE
Аватара пользователя
zoltanleo
постоялец
Сообщения: 459
Зарегистрирован: 17.10.2013 10:55:01

Сообщение zoltanleo »

0beron писал(а):Что делаю не так?

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

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  with CheckGroup1 do
  begin
    CheckGroup1.Items.Clear;

    for i:= 0 to 10 do
    begin
      Items.Add('Item ' + IntToStr(i));

      //uses math
      Checked[i]:= (i mod 2 = 0);   
    end;
  end;
end;


Что накодишь, то и будет. Ищи косяк в значениях из БД

Изображение
Ответить