Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.04 c
1-1128075394
pahan07
2005-09-30 14:16
2005.10.23
что я не так делаю?


14-1127999260
mjetvc
2005-09-29 17:07
2005.10.23
Как установить на компьютер Microsoft Jet?


14-1128432314
Weiss
2005-10-04 17:25
2005.10.23
Связь с интернетом


1-1128066120
Zelius
2005-09-30 11:42
2005.10.23
Как разнообразить отображение TPageControl a


2-1128078215
SergProger
2005-09-30 15:03
2005.10.23
Несколько файлов в одном Exe





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский