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

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



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

тогда все вопросы к авторам говнокода TUniComponent
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
компонента не запоминает свое положение на форме
    #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
компонента не запоминает свое положение на форме
    #40010299
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению, исходников uniGUI нет, я я не знаю, что там внутри TUniComponent
...
Рейтинг: 0 / 0
компонента не запоминает свое положение на форме
    #40010321
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

Остальные TUniComponent этим не страдают. Значит дело не в нем. Смотри исходники uniSweetAlert.
...
Рейтинг: 0 / 0
компонента не запоминает свое положение на форме
    #40010324
Фотография 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
компонента не запоминает свое положение на форме
    #40010332
istrebitel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X11,

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


Это зачем?
...
Рейтинг: 0 / 0
компонента не запоминает свое положение на форме
    #40010333
Фотография 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
компонента не запоминает свое положение на форме
    #40010342
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11
вероятно, для указания того, где должно появится окошко сообщения
Ну вот причина бага и стала ясна.

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


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