Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / компонента не запоминает свое положение на форме / 12 сообщений из 12, страница 1 из 1
19.10.2020, 17:02
    #40009916
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
компонента не запоминает свое положение на форме
Есть самописная компонента "uniSweetAlert" для UniGUI, ну т.е. не из комплекта, а скачанная на просторах тырнета.
Компонента невизуальная.
Проблема в том, что она на форме в design-time не запоминает свое место и всегда лежит в верхнем левом углу.
Как заставить эту невизуальную компоненту запоминать свое положение на форме в design-time?
Спасибо.
...
Рейтинг: 0 / 0
19.10.2020, 17:13
    #40009921
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
компонента не запоминает свое положение на форме
19.10.2020 17:02, X11 пишет:
> Как заставить эту невизуальную компоненту запоминать свое положение на форме в design-time?
>

наследовать её от правильного предка
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
19.10.2020, 17:20
    #40009924
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
компонента не запоминает свое положение на форме
Код: pascal
1.
2.
3.
4.
type
  TUniJToast = class(TUniComponent)
  private
    { Private declarations }



да вроде нормальное наследования
...
Рейтинг: 0 / 0
19.10.2020, 17:25
    #40009931
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
компонента не запоминает свое положение на форме
19.10.2020 17:20, X11 пишет:
> да вроде нормальное наследования

тогда все вопросы к авторам говнокода TUniComponent
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
20.10.2020, 18:23
    #40010268
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
компонента не запоминает свое положение на форме
X11
Код: pascal
1.
TUniJToast = class(TUniComponent)

В TComponent так
Код: 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.
procedure TComponent.DefineProperties(Filer: TFiler);
var
  Ancestor: TComponent;
                                                                                           
  Info: Integer;
begin
  Info := 0;
  Ancestor := TComponent(Filer.Ancestor);
  if Ancestor <> nil then Info := Ancestor.FDesignInfo;
  Filer.DefineProperty('Left', ReadLeft, WriteLeft,
    LongRec(FDesignInfo).Lo <> LongRec(Info).Lo);
  Filer.DefineProperty('Top', ReadTop, WriteTop,
    LongRec(FDesignInfo).Hi <> LongRec(Info).Hi);
end;

procedure TComponent.ReadLeft(Reader: TReader);
begin
  LongRec(FDesignInfo).Lo := Reader.ReadInteger;
end;

procedure TComponent.ReadTop(Reader: TReader);
begin
  LongRec(FDesignInfo).Hi := Reader.ReadInteger;
end;

procedure TComponent.WriteLeft(Writer: TWriter);
begin
  Writer.WriteInteger(LongRec(FDesignInfo).Lo);
end;

procedure TComponent.WriteTop(Writer: TWriter);
begin
  Writer.WriteInteger(LongRec(FDesignInfo).Hi);
end;

...
Рейтинг: 0 / 0
20.10.2020, 19:35
    #40010299
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
компонента не запоминает свое положение на форме
К сожалению, исходников uniGUI нет, я я не знаю, что там внутри TUniComponent
...
Рейтинг: 0 / 0
20.10.2020, 20:29
    #40010321
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
компонента не запоминает свое положение на форме
X11,

Остальные TUniComponent этим не страдают. Значит дело не в нем. Смотри исходники uniSweetAlert.
...
Рейтинг: 0 / 0
20.10.2020, 20:36
    #40010324
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
компонента не запоминает свое положение на форме
на что тут смотреть, что может влиять на положение в design-time?

property pos: TPosition read fPos write fPos; ???


TUniJToast = class(TUniComponent)
Код: 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.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
type
  TUniJToast = class(TUniComponent)
  private
    { Private declarations }

    { ClientSide events raised on the server via AJAX }
    FOnBeforeShow : TNotifyEvent;
    FOnAfterShown : TNotifyEvent;
    FOnBeforeHide : TNotifyEvent;
    FOnAfterHidden : TNotifyEvent;
    fText: string;
    fHeading: string;
    fIconType: TIconType;
    fShowHideTransition: TTransition;
    fAllowToastClose: Boolean;
    fHideAfter: integer;
    fStack: Boolean;
    fStackSize: integer;
    fPos: TPosition;
    fTextAlign: TTextAlign;
    fLoader: Boolean;
    fLoaderBg: string;
    fbgColor: string;
    ftextColor: string;
    fleft: Integer;
    ftop: Integer;

    procedure H_OnBeforeShow(Sender: TObject);
    procedure H_OnAfterShown(Sender: TObject);
    procedure H_OnBeforeHide(Sender: TObject);
    procedure H_OnAfterHidden(Sender: TObject);

    function GetOnBeforeShow: TNotifyEvent;
    function GetOnAfterShown: TNotifyEvent;
    function GetOnBeforeHide: TNotifyEvent;
    function GetOnAfterHidden: TNotifyEvent;

    procedure SetOnBeforeShow(const Value: TNotifyEvent);
    procedure SetOnAfterShown(const Value: TNotifyEvent);
    procedure SetOnBeforeHide(const Value: TNotifyEvent);
    procedure SetOnAfterHidden(const Value: TNotifyEvent);

    function BuildJsonParams(): string;
    function GetIconType(i: TIconType): string;
    function GetTransition(i: TTransition): string;
    function GetPosition(i: TPosition): string;
    function GetTextAlign(i: TTextAlign): string;


  protected
    { Protected declarations }
    function VCLComponentClassName: string; override;
    procedure WebCreate; override;
    procedure JSEventHandler(AEventName: string; AParams: TUniStrings); override;
  public
    { Public declarations }
  published
    property text: string read fText write fText;
    property heading: string read fHeading write fHeading;
    property icon: TIconType read fIconType write fIconType;
    property showHideTransition: TTransition read fShowHideTransition write fShowHideTransition;
    property allowToastClose: Boolean read fAllowToastClose write fAllowToastClose;
    property hideAfter: integer read fHideAfter write fHideAfter;
    property stack: Boolean read fStack write fStack;
    property stackSize: integer read fStackSize write fStackSize;
    property pos: TPosition read fPos write fPos;
    property textAlign: TTextAlign read fTextAlign write fTextAlign;
    property loader: Boolean read fLoader write fLoader;
    property loaderBg: string read fLoaderBg write fLoaderBg;

    property bgColor: string read fbgColor write fbgColor;
    property textColor: string read ftextColor write ftextColor;

    property left: Integer read fleft write fleft;
    property top: Integer read ftop write ftop;

    { ClientSide events raised on the server via AJAX }
    property OnBeforeShow:  TNotifyEvent read GetOnBeforeShow write SetOnBeforeShow;
    property OnAfterShown:  TNotifyEvent read GetOnAfterShown write SetOnAfterShown;
    property onBeforeHide:  TNotifyEvent read GetOnBeforeHide write SetOnBeforeHide;
    property OnAfterHidden: TNotifyEvent read GetOnAfterHidden write SetOnAfterHidden;

    procedure Clear;
    procedure ShowMessage;

  end;

...
Рейтинг: 0 / 0
20.10.2020, 20:51
    #40010332
istrebitel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
компонента не запоминает свое положение на форме
X11,

Код: pascal
1.
2.
property left: Integer read fleft write fleft;
property top: Integer read ftop write ftop;


Это зачем?
...
Рейтинг: 0 / 0
20.10.2020, 20:55
    #40010333
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
компонента не запоминает свое положение на форме
вероятно, для указания того, где должно появится окошко сообщения

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
function TUniJToast.GetPosition(i: TPosition): string;
var enumStr: string;
    fixedName: string;
begin
     enumStr := TRttiEnumerationType.GetName(i);

     if (enumStr='custom') then
     begin
        fixedName := 'left: ' + IntToStr(left) + ',';
        fixedName := 'top: ' + IntToStr(top);
     end
     else
     begin
         fixedName := stringreplace(enumStr,'_','-',[rfReplaceAll,rfIgnoreCase]);
     end;
     result := fixedName;
end;
...
Рейтинг: 0 / 0
20.10.2020, 21:34
    #40010342
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
компонента не запоминает свое положение на форме
X11
вероятно, для указания того, где должно появится окошко сообщения
Ну вот причина бага и стала ясна.

Переименовывай проперти.
...
Рейтинг: 0 / 0
20.10.2020, 21:51
    #40010345
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
компонента не запоминает свое положение на форме
rgreat, спасибо, помогло
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / компонента не запоминает свое положение на форме / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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