Ну, вроде как все правильно, но если проверить — не работает
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
Здравствуйте, Slicer [Mirkwood], Вы писали:
SM>Ну, вроде как все правильно, но если проверить — не работает SM>SetWindowLong(panel1.Handle, GWL_STYLE, WS_OVERLAPPEDWINDOW or WS_VISIBLE or WS_CHILD or WS_CLIPSIBLINGS);
SM>И нифига Даже если тут прописаны не все нужные стили — хоть какой-то эффект должен быть, а панель как лежала, так и лежит
Я про CreateParams говорил, если вы заметили. С помощью SetWindowLong ничего не получится. Нарисовать вам примерчик?
Здравствуйте, Slicer [Mirkwood], Вы писали:
SM>Ну, вроде как все правильно, но если проверить — не работает SM>SetWindowLong(panel1.Handle, GWL_STYLE, WS_OVERLAPPEDWINDOW or WS_VISIBLE or WS_CHILD or WS_CLIPSIBLINGS);
SM>И нифига Даже если тут прописаны не все нужные стили — хоть какой-то эффект должен быть, а панель как лежала, так и лежит
Вот, набросал в общем примерчик, правда на дебилдере:
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;
Здравствуйте, Flamer, Вы писали:
F>Я про CreateParams говорил, если вы заметили. С помощью SetWindowLong ничего не получится.
Да все я заметил Только вот почему не получается с помощью SetWindowLong, объясни убогому? По крайней мере, в описаловке по апишке ничего такого вроде не было сказано.
Slicer
Специалист — это варвар, невежество которого не всесторонне :)
То есть? Чтобы текст был выравнен по правому краю, что ли?
Вообще-то,
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
Специалист — это варвар, невежество которого не всесторонне :)
Здравствуйте, Slicer [Mirkwood], Вы писали:
F>>Я про CreateParams говорил, если вы заметили. С помощью SetWindowLong ничего не получится. SM>Да все я заметил Только вот почему не получается с помощью SetWindowLong, объясни убогому? По крайней мере, в описаловке по апишке ничего такого вроде не было сказано.
Потому, как окно должно быть _создано_ с таким стилем.
Например, однострочный edit не переделать в многострочный налету, как, собс-но,
и многие другие стили.
Отсюда и нужда в RecreateWnd, упомянутая уважаемым Arioch.
Здравствуйте, Leonid Troyanovsky, Вы писали:
SM>>Только вот почему не получается с помощью SetWindowLong, объясни убогому? По крайней мере, в описаловке по апишке ничего такого вроде не было сказано.
LT> Потому, как окно должно быть _создано_ с таким стилем. LT> Например, однострочный edit не переделать в многострочный налету, как, собс-но, LT> и многие другие стили.
Вот как? А где бы почитать об этом?
Кстати, я в этой же ветке упомянул, что не работает и предложенный в MSDN код по изменению выравнивания Edit'a.
Slicer
Специалист — это варвар, невежество которого не всесторонне :)
Здравствуйте, 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.