![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Расскажите пожалуйта, что такое Applet [Delphi, Windows]
Galkov © (2006-12-27 14:36:00)И как с ним бороться....
Потому что сами мы не местные :(( приехали на лечение....
А если серьезно: не профессиональный программист я, а так - по вечерам, в выходные.... :(
Вот пример:
Program test;
uses windows,messages,kol;
const
WS_EX_LAYERED=$00080000;
LWA_COLORKEY=$00000001;
function SetLayeredWindowAttributes(h:Integer;c:TColor;A:Byte;F:DWORD): Boolean; stdcall; external 'user32.dll';
type TMainForm=object
Control:PControl;
function _OnMes(var Msg: tagMSG; var Rslt: Integer ): Boolean;
end;
function TMainForm._OnMes;
begin
Result := False;
if (Msg.message = WM_MOVE) or (Msg.message = WM_SIZE) then
Applet.BoundsRect := Control.BoundsRect;
end;
var MainForm:TMainForm;
begin
Applet := NewApplet('Хи-Хи-Хи');
with MainForm do begin
Control := NewForm(Applet,'Test').SetSize(200,100);
Control.onMessage := _OnMes;
with NewLabel(Control,'Привет участникам автопробега !!!').SetSize(100,20)^ do begin
Color := clSilver;
TextAlign := taCenter;
Align := caBottom;
Ctl3D := true;
end;
Control.ExStyle := Control.ExStyle or WS_EX_LAYERED;
SetLayeredWindowAttributes(Control.handle, clSilver, 0, LWA_COLORKEY);
end;
Run(Applet);
end.
Вопросов, почему прозрачность кривая - не возникает. Возникает: почему Applet видимый ???
И как с этим бороться...
И хочется, конечно, базовую философию этого вопроса освоить, а из исходников это как-то не очень просто :(.
Вот про Align Владимирочень хорошо написал (как есть - за что ему ОГРОМНОЕ спасибо)....
Galkov (2007-01-05 23:40:00) [1]Ну чтобы помочь, необходимо умение понимать о чем спрашивают, ИМХО
Не думал, что для понимания вопроса требуется столь огромное напряжение...
Например, что значительно более интересно: зачем делается постоянным WS_EX_APPWINDOW и меняется по жизни WS_VISIBLE, а не наоборот... И т.п..
Возможно, для такого понимания следует снизить градус снобизма (руководствуюсь содержанием Вашего последнего поста) - не знаю....
Видите ли, мы хоть и из Сибири, но базовое образование нам дают по-лучше многих (если не сказать - ВСЕХ) московских вузов...
Похоже, на этом форуме в базовых вопросах вообще мало кто разбирается :((
GR (2007-01-05 22:19:00) [2]Да, хотелось помочь человеку не знающему, "что такое applet", программирующему "по вечерам и в выходные"и утверждающему что "беседа могла бы быть более продуктивной, если предполагать, что собеседник в состоянии думать более чем на один ход вперед"!
Человек этот от помощи отказался!
Ну ладно, извинения приняты!!!
GR (2007-01-05 22:05:00) [3]Я добавлю:
Ха-Ха!
Galkov (2007-01-05 15:18:00) [4]Видите ли, уважаемый GR...
Если бы меня интересовал вопрос, как правильно делать анимацию, я именно так и поставил бы вопрос в заголовке топика.
Кстати говоря, анимация после MinimizeNormalAnimated не совсем адекватна, если у некого чела TaskBar вертикален.
Вопрос в том, что теоретически возможны причиныдля придания Applet-у не нулевых размеров.
Или Ваше утверждение заключается в том, что таковых причин НИКОГДА не возникнет ????
Но тогда ссылки на MinimizeNormalAnimated совершенно недостаточно для аргументации такового.
Осмелюсь заверить Вас, что беседа могла бы быть более продуктивной, если предполагать, что собеседник в состоянии думать более чем на один ход вперед....
GR (2007-01-05 14:01:00) [5]> Если честно, то мне показалось совсем наоборот: НЕ по теме
Из за этой строки твой проект как раз и "не выдает то, что тебе надо"!
*
Читал "часом"!! И тебе следует еще раз почитать!
В конце строка предлогают "...или, воспользоваться ... MinimizeNormalAnimated"
Это более подойдет к твоему: "И как с ним бороться...."
Уважаемый Galkov!!!
Galkov (2006-12-28 22:22:00) [6]
> GR (28.12.06 21:51) [12]
> Вопрос по теме: что делает это строка??,??
Если честно, то мне показалось совсем наоборот: НЕ по теме
Зачем эта строка - это один развор, для FAQ-а, к примеру (не читали часом? - там и возможный ответ)
А заявленная тема топика - совершенно другой, ИМХО
GR (2006-12-28 21:51:00) [7]Вопрос по теме: что делает это строка??,??
====-----------------------------------------====
Applet.BoundsRect := Control.BoundsRect;
====-----------------------------------------====
Galkov (2006-12-28 17:17:00) [8]Ну ясно, я - тупой, вставить не догадался.
GR, сам-то вставлял, или совет "вслепую" ???
GR (2006-12-28 15:04:00) [9]Вставь в код и увидишь!!!
Galkov (2006-12-28 13:45:00) [10]
> GR (28.12.06 12:40) [7]
> MainForm.Control.Brush.BrushStyle := bsClear;
И чего будет ??? Не понял, в общем ... :(
[e]Bu$ter (2006-12-28 12:49:00) [11]Ага, так наглядней :)
Но всё же не понятно, как можно что-то рисовать (в обработчкике onPaint) на прозрачной форме, и чтоб оно не размазывалось...
GR (2006-12-28 12:40:00) [12]MainForm.Control.Brush.BrushStyle := bsClear;
Galkov (2006-12-28 11:14:00) [13]Ну может так наглядней будет....
Program test;
uses windows,messages,kol;
const
WS_EX_LAYERED=$00080000;
LWA_COLORKEY=$00000001;
function SetLayeredWindowAttributes(h:Integer;c:TColor;A:Byte;F:DWORD): Boolean; stdcall; external 'user32.dll';
type TMainForm=object
Control,Check:PControl;
function _OnMes(var Msg: tagMSG; var Rslt: Integer ): Boolean;
end;
function TMainForm._OnMes;
begin
Result := False;
if ((Msg.message = WM_MOVE)or(Msg.message = WM_SIZE))and(not Check.Checked) then
Applet.BoundsRect := Control.BoundsRect;
end;
var MainForm:TMainForm;
begin
Applet := NewApplet('Хи-Хи-Хи');
with MainForm do begin
Control := NewForm(Applet,'Test').SetSize(200,120);
Control.onMessage := _OnMes;
Check := NewCheckBox(Control,'Lock').SetPosition(10,10);
with NewLabel(Control,'Привет участникам автопробега !!!').SetSize(100,40)^ do begin
Color := clSilver;
TextAlign := taCenter;
Align := caBottom;
Ctl3D := true;
end;
Control.ExStyle := Control.ExStyle or WS_EX_LAYERED;
SetLayeredWindowAttributes(Control.handle, clSilver, 0, LWA_COLORKEY);
end;
Run(Applet);
end.
Galkov (2006-12-28 08:52:00) [14]
> А вот я бы хотел знать почему она такая, и как её сделать
> нормальной
Дык нормальная она...
В дырочку - ты Аплета видишь.
Вот я и спрашиваю, как сделать его невидимым, но чтобы кнопа в таскбаре осталась....
[e]Bu$ter (2006-12-28 00:34:00) [15]
> Вопросов, почему прозрачность кривая - не возникает.
А вот я бы хотел знать почему она такая, и как её сделать нормальной. Может знает кто-нибудь, есть это в книге?
Galkov (2006-12-27 22:56:00) [16]Может я чего недообъяснил....
В примере поста [1] этого аплета ВИДНО - и это не радует
Galkov (2006-12-27 22:54:00) [17]Прочитал.
Потому и не пытаюсь делать Applet.visible:=false;
Ну и запостился потому, что не помогает это мнесделать его (Applet) невидимым.
Вроде бы любое окно можно сделать невидимым....
А как ?????
Vladimir Kladov (2006-12-27 21:59:00) [18]Кнопка на таск баре. Читайте книгу, там написано.