Форум: "Основная";
Текущий архив: 2005.10.23;
Скачать: [xml.tar.bz2];
ВнизКласс контейнера Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.046 c