Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Класс контейнера [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 ??


Наверх

Титульная страница Поиск, карта сайта Написать письмо