Изменение ориентации компонента

Форум для изучающих FPC и их учителей.

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

Изменение ориентации компонента

Сообщение 0beron » 26.01.2023 14:49:31

Хочу добавить свойство Kind в компонент
(изменение ориентации компонента), делаю так:

type
TKind = (Book, Album);
. . .
TMLImage = class(TImage)
private
fKind: TKind;
procedure SetKind(const AValue: TKind);
protected
procedure Paint; override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property Kind: TKind read fKind write SetKind;
end;
. . .

implementation

procedure TMLImage.SetKind(const AValue: TKind);
var
Knd: TPoint;
begin
Knd := Point(Width, Height);
if AValue = Book then begin
Height := Knd.Y;
Width := Knd.X;
end;
if AValue = Album then begin
Height := Knd.X;
Width := Knd.Y;
end;
fKind := AValue;
invalidate;
end;

procedure TMLImage.Paint;
begin
inherited Paint;
end;

constructor TMLImage.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
fFormat.Height := 150;
fFormat.Width := 100;
//fKind := Book;
SetKind(Book);
end;

destructor TMLImage.Destroy;
begin
inherited Destroy;
end;

Отрабатывает только при изменении Kind с Book на Album,
что я делаю не так?
0beron
новенький
 
Сообщения: 23
Зарегистрирован: 18.08.2012 19:32:10

Re: Изменение ориентации компонента

Сообщение zub » 26.01.2023 17:29:37

Код: Выделить всё
if AValue<>fKind then begin
  Height := Knd.X;
  Width := Knd.Y;
end;
zub
долгожитель
 
Сообщения: 2884
Зарегистрирован: 14.11.2005 23:51:26

Re: Изменение ориентации компонента

Сообщение 0beron » 26.01.2023 19:21:58

Спасибо, но не работает, к тому-же
это условие описано в явном виде:
if AValue = Album then begin...
Но попробовал:
if (AValue = Album) or (AValue <> fKind) then begin

Добавлено спустя 10 минут 11 секунд:
Извините - пробовал под Лазарем, собранным из исходников - не работает,
Попробовал из репозитория - работает, видимо криво собрал...
Еще раз спасибо и извините за глупый вопрос.
Переделал так:
if fKind = Book then begin
ClientHeight := Knd.Y;
ClientWidth := Knd.X;
end
else begin
ClientHeight := Knd.X;
ClientWidth := Knd.Y;
end;
0beron
новенький
 
Сообщения: 23
Зарегистрирован: 18.08.2012 19:32:10


Вернуться в Обучение Free Pascal

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

Рейтинг@Mail.ru