Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Несробатывает SetStroke / 5 сообщений из 5, страница 1 из 1
17.09.2018, 15:02
    #39703664
Janex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несробатывает SetStroke
Привет всем.
Есть мои компонент, в нём один Property GaugeDivisions;
Всё работает, НО есть одна проблема - если ему что то меняю в своистве Stroke,
то процедура SetStroke почему то не срабатывает :(
Рядом лежит Count - там что то меняем и SetCount срабатывает.
Немогу понять - толи я что то не то или глюк делфи ?
Версия 10.2.3

Есть идеи где грабли ?



Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
TxdxGaugeDivisions = Class(TPersistent)
Private
  FCount  :Integer;
  FStroke :TStrokeBrush;
  Procedure SetCount(AValue: Integer);
  Procedure SetStroke(Const AValue :TStrokeBrush);
Public
  Constructor Create(Owner: TxdxGauge);
  Destructor  Destroy; Override;
Published
  Property Count  :Integer      Read FCount  Write SetCount;
  Property Stroke :TStrokeBrush Read FStroke Write SetStroke;
End;

Constructor TxdxGaugeDivisions.Create(Owner: TxdxGauge);
Begin
  FCount  := 5;
  FStroke := TStrokeBrush.Create(TBrushKind.Solid, TAlphaColors.Red);
End;

Destructor TxdxGaugeDivisions.Destroy;
begin
  FStroke.Free;
  Inherited;
End;

Procedure TxdxGaugeDivisions.SetCount(AValue: Integer);
Begin
  FCount := AValue;
  showmessage('2');
End;

Procedure TxdxGaugeDivisions.SetStroke(Const AValue :TStrokeBrush);
Begin
  FStroke := AValue;
  showmessage('1');
End;



WBR
Janex
...
Рейтинг: 0 / 0
17.09.2018, 15:04
    #39703670
zinpub
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несробатывает SetStroke
Так не бывает
...
Рейтинг: 0 / 0
17.09.2018, 15:09
    #39703678
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несробатывает SetStroke
Не понятно, может нужно просто еще раз скомпилировать компонент и инсталлировать в IDE


и замечание по коду: вы так теряете созданный объект FStroke := TStrokeBrush.Create
Код: pascal
1.
2.
3.
4.
Procedure TxdxGaugeDivisions.SetStroke(Const AValue :TStrokeBrush);
Begin
   FStroke := AValue;
   ...



Может лучше на что-нибудь такое заменить
Код: pascal
1.
2.
3.
4.
Procedure TxdxGaugeDivisions.SetStroke(Const AValue :TStrokeBrush);
Begin
   FStroke.Assigne(AValue );
   ...
...
Рейтинг: 0 / 0
17.09.2018, 15:17
    #39703684
Janex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несробатывает SetStroke
Кроик СемёнНе понятно, может нужно просто еще раз скомпилировать компонент и инсталлировать в IDE


и замечание по коду: вы так теряете созданный объект FStroke := TStrokeBrush.Create
Код: pascal
1.
2.
3.
4.
Procedure TxdxGaugeDivisions.SetStroke(Const AValue :TStrokeBrush);
Begin
   FStroke := AValue;
   ...



Может лучше на что-нибудь такое заменить
Код: pascal
1.
2.
3.
4.
Procedure TxdxGaugeDivisions.SetStroke(Const AValue :TStrokeBrush);
Begin
   FStroke.Assigne(AValue );
   ...



Да, FStroke.Assigne(AValue ); будет првильнее.
Но да - несробатывает, хоть смотрел пример ис TMS - там также, но решение нашёл, подглянул с
таго же TMS - у FStroke надо указать :

FStroke.OnChanged := _MyStrokeOnChanged;

Тогда там могу словить изменения, так что вопрос вроде как резрешился :)
Спасибо.
...
Рейтинг: 0 / 0
17.09.2018, 16:09
    #39703733
white_nigger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Несробатывает SetStroke
В зависимости от того что есть TStrokeBrush...
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Несробатывает SetStroke / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]