Изменить рамки GroupBox?

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

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

Re: Изменить рамки GroupBox?

Сообщение Лекс Айрин » 29.04.2016 17:19:46

Не пойму в чем прикол..
Макет компонента компилируется, устанавливается и после пересборки Лазарь валится с ошибкой StackOverflow

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

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls,
  ExtCtrls;

type

  { TColorGroup }

  TColorGroup = class(TPanel)
  private
    FColorBorder: TColor;
    FFone: TColor;
    { Private declarations }
    FLabel:TLabel;
    FShape:TShape;
    procedure SetColorBorder(AValue: TColor);
    procedure SetFone(AValue: TColor);
  protected
    { Protected declarations }
  public
    { Public declarations }
    constructor Create(TheOwner: TComponent); override;
    destructor Destroy; override;
  published
    { Published declarations }
    property ColorBorder:TColor read FColorBorder write SetColorBorder;
    property Fone:TColor read FFone write SetFone;
  end;

procedure Register;

implementation

procedure Register;
begin
  {$I colorgroup_icon.lrs}
  RegisterComponents('Lex',[TColorGroup]);
end;

{ TColorGroup }

procedure TColorGroup.SetColorBorder(AValue: TColor);
begin
  if FColorBorder=AValue then Exit;
  FColorBorder:=AValue;
end;

procedure TColorGroup.SetFone(AValue: TColor);
begin
  if FFone=AValue then Exit;
  FFone:=AValue;
end;

constructor TColorGroup.Create(TheOwner: TComponent);
begin
  inherited Create(TheOwner);
  TColorGroup.BorderWidth:=0;//скрываем рамку
  TColorGroup.BorderStyle:=bsNone;
  FLabel:=TLabel.Create(Self); //создание компонент
  FShape:=TShape.Create(Self);
  FLabel.Caption:=TColorGroup.Caption;
  FLabel.Left:=20;// чтобы не начинался с самого угла
  FLabel.Top:=0;
  FLabel.AutoSize:=true;
  Flabel.Color:=TColorGroup.ColorBorder;//чтобы он стал как бы частью рамки
  FLabel.Visible:=True;
  FShape.Left:=0;
  FShape.Top:=FLabel.Height+3;// для расположения под меткой.
  FShape.Height:=TColorGroup.Height-FLabel.Height-3;
  FShape.Width:=TColorGroup.Width;
end;

destructor TColorGroup.Destroy;
begin
  inherited Destroy;
end;

end.                                                 


Ах да, после замены лазаря старой версией текст модуля оказывается заменен на автоматически создаваемый шаблон.

Добавлено спустя 1 минуту 54 секунды:
pupsik писал(а):TShape а он может иметь дочерние компоненты :shock: ???


Судя по докам, можно постараться

pupsik писал(а):кустом контрол в подмогу...


можно ссылкой?
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Изменить рамки GroupBox?

Сообщение pupsik » 29.04.2016 17:38:28

можно ссылкой? - TCustomControl....

Судя по докам, можно постараться
дольше стараться нежели через TCustomControl. Хотя да: можно, а вот надо ли .?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Изменить рамки GroupBox?

Сообщение Лекс Айрин » 29.04.2016 17:55:50

pupsik Сейчас это уже дело чести! Все равно есть шанс, что придется потом делать компоненты, а у меня не получается.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Изменить рамки GroupBox?

Сообщение pupsik » 29.04.2016 19:51:20

pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Изменить рамки GroupBox?

Сообщение Лекс Айрин » 29.04.2016 20:04:51

А насчет моего недокомпонента не подскажешь?
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Изменить рамки GroupBox?

Сообщение pupsik » 29.04.2016 20:23:10

А насчет моего недокомпонента не подскажешь?
вы его пробовали без установки в иде?

Код: Выделить всё
constructor TColorGroup.Create(TheOwner: TComponent);
begin
  inherited Create(TheOwner);
  self.BorderWidth:=0;
  self.BorderStyle:=bsNone;
  FLabel:=TLabel.Create(Self);
  FShape:=TShape.Create(Self);
  FLabel.Caption := self.Caption;
  FLabel.Left:=20;
  FLabel.Top:=0;
  FLabel.AutoSize:=true;
  Flabel.Color:= self.ColorBorder;
  FLabel.Visible:=True;
  FShape.Left:=0;
  FShape.Top:=FLabel.Height+3;
  FShape.Height:=self.Height-FLabel.Height-3;
  FShape.Width:=self.Width;
end;\0

попробуйте так...
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Изменить рамки GroupBox?

Сообщение Лекс Айрин » 29.04.2016 20:46:12

pupsik, до меня дошло... я пытался писать код в файле самого компонента... в автоматически создаваемом... почему так получилось я не понял((( Естественно, что файл перед компиляцией перезаписывался((

Попробую переписать в нормальном файле.
насчет Self.xxxxx принимаю так и запишу.

Добавлено спустя 3 минуты 16 секунд:
Все равно крашится((( попробую действительно без установки в ИДЕ.. только в динамическом создании компонент я ничего не понимаю(((
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Изменить рамки GroupBox?

Сообщение pupsik » 29.04.2016 21:14:52

кстати: что там насчет parenta у ваших контролов?
Код: Выделить всё
  inherited Create(TheOwner);
  BevelWidth := 0;
  BorderStyle :=bsNone;
  FLabel:=TLabel.Create(self);
  With FLabel do
  begin
    Parent := self;
    Caption :='test';// self.Caption;
    Left:=20;
    Top:=0;
    AutoSize:=true;
    Color := self.ColorBorder;
    Visible :=True;
  end;
{}
  FShape := TShape.Create(self);
  With FShape do
  begin
    Parent := self;
    FShape.Left := 0;
    FShape.Top := FLabel.Height + 3;
    FShape.Height := Height - FLabel.Height-3;
    FShape.Width := Width - 2;
  end; \0


в динамическом создании компонент


Код: Выделить всё
procedure TForm1.FormCreate(Sender: TObject);
begin
  With  TColorGroup.Create(self) do
  begin
    Parent := Form1;
    Width := 100;
    Height := 100;
    Left := 10;
    Top := 10;
  end;
end;      \0


п.с.
Мне интересно: как вы будете линию сверху обрабатывать :)
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Изменить рамки GroupBox?

Сообщение Лекс Айрин » 29.04.2016 21:26:02

pupsik писал(а):кстати: что там насчет parenta у ваших контролов?


Упссс... забыл. Завтра попробую. Спасибо за подсказку.

pupsik писал(а):Мне интересно: как вы будете линию сверху обрабатывать


Какую линию? А вообще, главное сделать, а издеваться (думать) будем потом.

ЗЫ Не люблю оператор With -- от иногда слишком расслабляет.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Изменить рамки GroupBox?

Сообщение pupsik » 29.04.2016 22:40:24

от иногда слишком расслабляет.
ну..у это на любителя и "кривизну".

Попробовал панельку (выше). В принципе доработать малость и подшлифовать. А так...

Добавлено спустя 2 минуты 21 секунду:
п.с.
Это уже с готовым пакетом. Т.е. разместил компонент и заполнил необходимым.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Изменить рамки GroupBox?

Сообщение Лекс Айрин » 30.04.2016 09:19:13

мда... установка родителей не помогла(((
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Изменить рамки GroupBox?

Сообщение pupsik » 30.04.2016 10:13:08

Часть вторая :lol:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Изменить рамки GroupBox?

Сообщение Лекс Айрин » 30.04.2016 11:08:41

Вообще-то, я планировал, раз уж взялся, сделать компонент с несколькими типами заголовка. Но вначале, надо сделать хотя бы работоспособный компонент.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Изменить рамки GroupBox?

Сообщение pupsik » 30.04.2016 11:10:28

Но вначале, надо сделать хотя бы работоспособный компонент.
дык он работает. Т.е. устанавливается и т.д..
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Изменить рамки GroupBox?

Сообщение Лекс Айрин » 30.04.2016 11:14:36

pupsik, странно... Это, получается, косяк моей сборки Лазаря?
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Пред.След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 236

Рейтинг@Mail.ru