![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Класс контейнера [D7, WinXP]
IfBeginThenEnd © (2005-09-30 12:35:00)MyForm: TForm;
MyMemo: Tmemo;
затем по нажатию на Button1 создается форма и на ней Мемо,
(таких форм с Мемо может создаваться множество...)
у Мемо есть событие OnMouseLeave, по этому событию необходимо MyForm.AlphaBlendValue:=255;
(воостанавливаем прозрачность при наведении мыши)
пробовал if Sender is TForm then ....
но Мемо занимает всю клиетскую область формы поэтому условие не выполняется, если просто написать
MyForm.AlphaBlendValue:=255; то при наведении на одну такую форму значение AlphaBlendValue меняется у всех созданных форм :(
вообщем надо написать что-то вроде
if sender is Conteiner.Class then begin....:о)))
/ \
||
надеюсь вы поняли что хочу, прошу помощи!!!!
ShiFT (2005-10-03 12:25:00) [1]
for i:= 0 to screen.FormCount -1 do
screen.Forms[i].color := $000000000;
IfBeginThenEnd (2005-10-03 12:00:00) [2]я прошу прощения за назойливость, но опять нужна Ваша помощь...
теперь обратная задача:
по определенному событию (событие происходит на TForm1, см. выше), необходимо изменить свойство (например Color) у всех ранее созданных форм (MyForm), проблема опять таже: MyForm естесственно указывает на последнюю созданную форму, а как перебрать их все и изменить нужное свойство... у всех ?
IfBeginThenEnd (2005-09-30 14:03:00) [3]Юрий Зотов © (30.09.05 13:52) [8]
Спасибо огромное!
Все работает как часы!
Юрий Зотов (2005-09-30 13:52:00) [4]> IfBeginThenEnd (30.09.05 13:36) [7]
Тут и пробовать нечего. Значение меняется у той формы, на которую указывает переменная MyForm, а она у Вас всегда указывает на последнюю созданную форму. Вот у нее и меняется, ничего странного.
Было же сказано - все в 1 строку и никаких MyForm.
var
Form1: TForm1;
// myform: tform; Эту строку выкинуть
// mymemo: tmemo; Эту строку выкинуть
procedure TForm1.ButtonCreateClick(Sender: TObject);
var
F: TForm;
begin
F := TForm.Create(Self);
with TMemo.Create(F) do
begin
Parent := F;
Align := alClient;
OnClick := Form1.MemoClick
end;
F.AlphaBlend := True;
F.AlphaBlendValue := 150;
F.OnClose := DynamicFormClose; // Иначе будет утечка памяти
F.Show
end;
procedure TForm1.MemoClick(Sender: TObject);
begin
TForm(TControl(Sender).Parent).AlphaBlendValue := 255
end;
procedure TForm1.DynamicFormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree
end;
IfBeginThenEnd (2005-09-30 13:36:00) [5]
type
TForm1 = class(TForm)
ButtonCreate: TButton;
procedure ButtonCreateClick(Sender: TObject);
private
{ Private declarations }
public
procedure click (sender: tobject);
{ Public declarations }
end;
var
Form1: TForm1;
myform: tform;
mymemo: tmemo;
implementation
{$R *.dfm}
procedure TForm1.ButtonCreateClick(Sender: TObject);
begin
myform:=tform.Create(self);
mymemo:=tmemo.Create(myform);
mymemo.Parent:=myform;
mymemo.Align:=alclient;
myform.AlphaBlend:=true;
myform.AlphaBlendValue:=150;
myform.Show;
mymemo.OnClick:=form1.click;
end;
procedure tform1.click (sender: tobject);
begin
if (sender as tmemo).Parent = MyForm then
TForm(TControl(Sender).Parent).AlphaBlendValue := 255;
end;
end.
торможу может, но так значение меняется только у формы, которая была создана последней.
попробуйте...
Юрий Зотов (2005-09-30 13:23:00) [6]> IfBeginThenEnd (30.09.05 12:56) [3]
Все пишется в 1 строчку:
TForm(TControl(Sender).Parent).AlphaBlendValue := 255;
И никаких MyForm.
> прозрачность измениться опять у ВСЕХ созданных форм
Почему Вы так решили?
IfBeginThenEnd (2005-09-30 13:21:00) [7]
> злобная танька (30.09.05 13:14) [4]
да я б с радостью , но код дома :(, а я на работе.
злобная танька (2005-09-30 13:14:00) [8]низнаю у меня усё работает..
можно полный код посмотреть?
IfBeginThenEnd (2005-09-30 12:56:00) [9]Не не ! Подождите !
Опять не то....(
если я напишу так:
begin
if (sender as tmemo).Parent = MyForm then
MyForm.AlphaBlendValue:=255;
end;
то прозрачность измениться опять у ВСЕХ созданных форм, а мне надо ТОЛЬКО у той Memo которой вызвало это событие...
help please!
IfBeginThenEnd (2005-09-30 12:50:00) [10]блин оказалось халява!
спасибо большое!
а я ш вчера весь вечер просидел продумал - так ниче и не придумал :(
TUser (2005-09-30 12:41:00) [11](Sender as TMemo).Parent ??