Re: Заголовок на кнопке
От: Аноним  
Дата: 03.09.04 10:29
Оценка:
Автор.

Может кто знает:
Как в Run-Time сделать,
чтобы поле редактирование в TEdit было сднинуто вправо
Re[4]: Заголовок на кнопке
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 03.09.04 11:56
Оценка:
Ну, вроде как все правильно, но если проверить — не работает
SetWindowLong(panel1.Handle, GWL_STYLE, WS_OVERLAPPEDWINDOW or WS_VISIBLE or WS_CHILD or WS_CLIPSIBLINGS);

И нифига Даже если тут прописаны не все нужные стили — хоть какой-то эффект должен быть, а панель как лежала, так и лежит

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Re[10]: Заголовок на кнопке
От: Аноним  
Дата: 03.09.04 12:48
Оценка:
Здравствуйте, Arioch, Вы писали:

A>The stars so gaily glistened... (Fri, 03 Sep 2004 09:22:23 GMT @432)

A>...while the fading voice of whispered through the darkness:

>> Форма с кнопками,memo и т.д. УЖЕ создана и отображена,

>> и все надо делать на "лету"

A>Потому и пишу про ReCreateWnd.


>> ( CreateParams имеет имеет атрибут protected и из экземпляра не виден,

>> я не хочу создавать новый class(TButton))

A>Про hack classes не слышал?


A>--

A>WinAMP://Nightwish — Planet Hell
A>http://Arioch.nm.ru/FL/Fidolook_SL.png Mail: the_Arioch<at>nm<dot>ru

Про hack classes не слышал?

Нет. Где посмоьреть(услышать?
Re[5]: Заголовок на кнопке
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 03.09.04 17:31
Оценка:
Здравствуйте, Slicer [Mirkwood], Вы писали:

SM>Ну, вроде как все правильно, но если проверить — не работает

SM>SetWindowLong(panel1.Handle, GWL_STYLE, WS_OVERLAPPEDWINDOW or WS_VISIBLE or WS_CHILD or WS_CLIPSIBLINGS);

SM>И нифига Даже если тут прописаны не все нужные стили — хоть какой-то эффект должен быть, а панель как лежала, так и лежит


Я про CreateParams говорил, если вы заметили. С помощью SetWindowLong ничего не получится. Нарисовать вам примерчик?
... << RSDN@Home 1.1.3 stable >>
Re[5]: Заголовок на кнопке
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 03.09.04 17:31
Оценка: 3 (1)
Здравствуйте, Slicer [Mirkwood], Вы писали:

SM>Ну, вроде как все правильно, но если проверить — не работает

SM>SetWindowLong(panel1.Handle, GWL_STYLE, WS_OVERLAPPEDWINDOW or WS_VISIBLE or WS_CHILD or WS_CLIPSIBLINGS);

SM>И нифига Даже если тут прописаны не все нужные стили — хоть какой-то эффект должен быть, а панель как лежала, так и лежит


Вот, набросал в общем примерчик, правда на дебилдере:

class PACKAGE TMyPanel : public TPanel
{
protected:

    void __fastcall CreateParams(Controls::TCreateParams &Params)
    {
      TPanel::CreateParams(Params);
      Params.Style |= WS_CAPTION;
    };
public:
    __fastcall TMyPanel(TComponent* AOwner) : TPanel(AOwner) {};
    __fastcall ~TMyPanel() {};

};
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TMyPanel* p = new TMyPanel(this);
p->Width = 100;
p->Height = 100;

p->Parent = this;
}
//---------------------------------------------------------------------------


Попробуйте Увидите что у панели есть заголовок окна и за него ее можно таскать по форме.
... << RSDN@Home 1.1.3 stable >>
Re[11]: Заголовок на кнопке
От: Arioch  
Дата: 04.09.04 00:05
Оценка:
The stars so gaily glistened... (Fri, 03 Sep 2004 12:48:15 GMT @575)
...while the fading voice of whispered through the darkness:


[Sorry, skipped]

>> Про hack classes не слышал?


> Нет. Где посмоьреть(услышать?


Где-то в VCLи
Идея впрочем очевидная.

TMyClass = class
...........
protected property NeededValue: ..................
end;
..............
var MyObj: TMyClass = TMyClass.Create(...);

~~~~~~ в другом файле ~~~~~~~~~~
TMyHackClass = class (TMyClass)
public property NeededValue;end;
end;
.....................
Value := TMyHackClass(TMyClass).NeededValue;


С private ак не поиграешь, но с protected вполне.

--
WinAMP://none: WinAMP is suffocated
http://Arioch.nm.ru/FL/Fidolook_SL.png Mail: the_Arioch<at>nm<dot>ru
Posted via RSDN NNTP Server 1.9 beta
Re[6]: Заголовок на кнопке
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 04.09.04 05:36
Оценка:
Здравствуйте, Flamer, Вы писали:

F>Я про CreateParams говорил, если вы заметили. С помощью SetWindowLong ничего не получится.

Да все я заметил Только вот почему не получается с помощью SetWindowLong, объясни убогому? По крайней мере, в описаловке по апишке ничего такого вроде не было сказано.

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Re[2]: Заголовок на кнопке
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 04.09.04 05:49
Оценка:
То есть? Чтобы текст был выравнен по правому краю, что ли?
Вообще-то,

There are three styles that cause the system to align the text in an edit control. The ES_LEFT, ES_CENTER, and ES_RIGHT styles determine whether text is aligned on the left, center, or right, respectively.

Соответственно, либо сделать наследника Edit'а, либо попробовать SetWindowLong(Edit1.handle, GWL_STYLE, GetWindowLong(Edit1.handle, GWL_STYLE) or ES_RIGHT); — однако же не работает. Пробовал по-другому, с GWL_EXSTYLE и WS_EX_RIGHT (как в MSDN) — но тоже не работает! Меня что, где-то накалывает VCL?

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Re[7]: Заголовок на кнопке
От: Leonid Troyanovsky  
Дата: 04.09.04 06:02
Оценка:
Здравствуйте, Slicer [Mirkwood], Вы писали:

F>>Я про CreateParams говорил, если вы заметили. С помощью SetWindowLong ничего не получится.

SM>Да все я заметил Только вот почему не получается с помощью SetWindowLong, объясни убогому? По крайней мере, в описаловке по апишке ничего такого вроде не было сказано.

Потому, как окно должно быть _создано_ с таким стилем.
Например, однострочный edit не переделать в многострочный налету, как, собс-но,
и многие другие стили.
Отсюда и нужда в RecreateWnd, упомянутая уважаемым Arioch.
--
С уважением, LVT
Re[8]: Заголовок на кнопке
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 04.09.04 08:15
Оценка:
Здравствуйте, Leonid Troyanovsky, Вы писали:

SM>>Только вот почему не получается с помощью SetWindowLong, объясни убогому? По крайней мере, в описаловке по апишке ничего такого вроде не было сказано.


LT> Потому, как окно должно быть _создано_ с таким стилем.

LT> Например, однострочный edit не переделать в многострочный налету, как, собс-но,
LT> и многие другие стили.

Вот как? А где бы почитать об этом?
Кстати, я в этой же ветке упомянул, что не работает и предложенный в MSDN код по изменению выравнивания Edit'a.

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Re[9]: Заголовок на кнопке
От: Leonid Troyanovsky  
Дата: 04.09.04 11:57
Оценка: 21 (1)
Здравствуйте, Slicer [Mirkwood], Вы писали:

SM>>>Только вот почему не получается с помощью SetWindowLong, объясни убогому? По крайней мере, в описаловке по апишке ничего такого вроде не было сказано.


LT>> Потому, как окно должно быть _создано_ с таким стилем.

LT>> Например, однострочный edit не переделать в многострочный налету, как, собс-но,
LT>> и многие другие стили.

SM>Вот как? А где бы почитать об этом?


msdn Knowledge Base KB83366
INFO: Value Returned by GetWindowLong(hWnd, GWL_STYLE)

SM>Кстати, я в этой же ветке упомянул, что не работает и предложенный в MSDN код по изменению выравнивания Edit'a.


А.. Там, наверное, вмешивается VCL.
Т.е., надо пробывать на контроле, собс-ручно созданным CreateWindow.
--
С уважением, LVT
Re[2]: Заголовок на кнопке
От: Leonid Troyanovsky  
Дата: 04.09.04 14:16
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Как в Run-Time сделать,

А>чтобы поле редактирование в TEdit было сднинуто вправо

http://groups.google.com/groups?selm=VA.000054be.00522963%40antispam.compuserve.com
--
С уважением, LVT
Re[2]: Заголовок на кнопке
От: ViRUS_1 Россия http://sibvic.narod.ru
Дата: 05.09.04 00:22
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Автор.


А>Может кто знает:

А>Как в Run-Time сделать,
А>чтобы поле редактирование в TEdit было сднинуто вправо
TRightEdit = class(TEdit)
protected
  procedure CreateParams(var Params: TCreateParams); override;
end;

procedure TRightEdit.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.Style:=Params.Style or ES_RIGHT;
end;
... << RSDN@Home 1.1.4 @@subversion >>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.