Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.23;
Скачать: CL | DM;

Вниз

Класс контейнера   Найти похожие ветки 

 
IfBeginThenEnd   (2005-09-30 12:35) [0]

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....:о)))
                  /  \
                   ||

надеюсь вы поняли что хочу, прошу помощи!!!!


 
TUser ©   (2005-09-30 12:41) [1]

(Sender as TMemo).Parent ??


 
IfBeginThenEnd   (2005-09-30 12:50) [2]

блин оказалось халява!
спасибо большое!
а я ш вчера весь вечер просидел продумал - так ниче и не придумал :(


 
IfBeginThenEnd   (2005-09-30 12:56) [3]

Не не ! Подождите !
Опять не то....(
если я напишу так:

begin
if (sender as tmemo).Parent = MyForm then
MyForm.AlphaBlendValue:=255;
end;


то прозрачность измениться опять у ВСЕХ созданных форм, а мне надо ТОЛЬКО у той Memo которой вызвало это событие...

help please!


 
злобная танька   (2005-09-30 13:14) [4]

низнаю у меня усё работает..
можно полный код посмотреть?


 
IfBeginThenEnd   (2005-09-30 13:21) [5]


> злобная танька   (30.09.05 13:14) [4]


да я б с радостью , но код дома :(, а я на работе.


 
Юрий Зотов ©   (2005-09-30 13:23) [6]

> IfBeginThenEnd   (30.09.05 12:56) [3]

Все пишется в 1 строчку:
TForm(TControl(Sender).Parent).AlphaBlendValue := 255;
И никаких MyForm.

> прозрачность измениться опять у ВСЕХ созданных форм
Почему Вы так решили?


 
IfBeginThenEnd   (2005-09-30 13:36) [7]

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:52) [8]

> 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 14:03) [9]

Юрий Зотов ©   (30.09.05 13:52) [8]

Спасибо огромное!
Все работает как часы!


 
IfBeginThenEnd   (2005-10-03 12:00) [10]

я прошу прощения за назойливость, но опять нужна Ваша помощь...

теперь обратная задача:
по определенному событию (событие происходит на TForm1, см. выше), необходимо изменить свойство (например Color) у всех ранее созданных форм (MyForm), проблема опять таже: MyForm естесственно указывает на последнюю созданную форму, а как перебрать их все и изменить нужное свойство... у всех ?


 
ShiFT   (2005-10-03 12:25) [11]

 for i:= 0 to screen.FormCount -1 do
   screen.Forms[i].color := $000000000;



Страницы: 1 вся ветка

Текущий архив: 2005.10.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.025 c
14-1127908554
NailMan
2005-09-28 15:55
2005.10.23
А Вирт-то почти наш(авиамоделисткий) человек!


1-1128164637
Chuck Loon
2005-10-01 15:03
2005.10.23
Изменения в директории (появление файла)


14-1128068917
Igorek
2005-09-30 12:28
2005.10.23
А что Вы знаете о Гондурасе?


10-1105532746
grigory
2005-01-12 15:25
2005.10.23
Как произвести экспорт в аутлуке?


14-1128167471
vrem
2005-10-01 15:51
2005.10.23
Увеличение информативности постов