MdiChild Boyutu Degisiyor neden ???
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
MdiChild Boyutu Degisiyor neden ???
Selam,
Programda bir MdiMenu ve 2 MdiChild form var. Program calisinca
frmSatici normal boyutta aciliyor, frmMusteri ise maximized olarak ekrani kaplamis sekilde aciliyor. Ama frmMusteri maximized acilinca frmSatici formu da kendiliginden maximized oluyor ???
Yada tam tersi frmMusteri yi ilk olarak acip frmSatici ikinci olarak acinca bu sefer ikinci acilan frmSatici normal boyutta oldugu icin frmMusteri maximized olmasina ragmen boyutlari degisiyor ????
Bunu önlemenin bir yolu yok mu ?
Yani ben mdichild olarak kullandigim her pencereye farkli buyuklukler vererek mdimenu icinde tutamaz miyim ?
Kolay Gelsin.
Programda bir MdiMenu ve 2 MdiChild form var. Program calisinca
frmSatici normal boyutta aciliyor, frmMusteri ise maximized olarak ekrani kaplamis sekilde aciliyor. Ama frmMusteri maximized acilinca frmSatici formu da kendiliginden maximized oluyor ???
Yada tam tersi frmMusteri yi ilk olarak acip frmSatici ikinci olarak acinca bu sefer ikinci acilan frmSatici normal boyutta oldugu icin frmMusteri maximized olmasina ragmen boyutlari degisiyor ????
Bunu önlemenin bir yolu yok mu ?
Yani ben mdichild olarak kullandigim her pencereye farkli buyuklukler vererek mdimenu icinde tutamaz miyim ?
Kolay Gelsin.
Okyanus
Hocam mdi childların özelliklerini ve boyutlarını bu şekilde ayarlayabilirsin
Kolay Gelsin
Kod: Tümünü seç
With Mdichildform do
begin
FormStyle := fsMDIChild;
Width := 200;
Height := 100;
end;
hocam merhaba aşağıdaki kod mdi uygulamalarda herhangi bir cihildin eventini yakalamayla ilgili ben denemdim..bende biryerden örnek olarak almıştım ama kullanmadım..
kolay gelsin
Kod: Tümünü seç
TChildForm = class(TObject)
private
Handle: THandle;
OldChildWndProc: Pointer;
InstanceChildWndProc: Pointer;
Popup: TPopupMenu;
procedure OnPopupMenu(Sender: TObject);
protected
procedure ChildWndProc(var Message: TMessage); virtual;
procedure ClickActBut(Sender: TObject);
procedure MinimizeMDIWindow(Sender: TObject);
procedure CloseMDIWindow(Sender: TObject);
procedure RestoreMDIWindow(Sender: TObject);
procedure MaximizeMDIWindow(Sender: TObject);
procedure ClickTriotekWindow(Sender: TObject);
public
constructor Create(AHandle: THandle; AToolBar: TElegantMDI);
destructor Destroy; override;
end;
constructor TChild.Create(AHandle: THandle; AToolBar: TElegantMDI);
var
i, x: Integer;
mi: TMenuItem;
begin
inherited Create;
Button.OnClick := ClickActBut;
Popup := TPopupMenu.Create(Button);
mi := TMenuItem.Create(Button);
mi.Caption := 'Activate window';
mi.OnClick := ClickActBut;
mi.Bitmap.Handle := LoadBitmap(0, PChar(OBM_CHECK));
Popup.Items.Add(mi);
mi := TMenuItem.Create(Button);
mi.Caption := '-';
Popup.Items.Add(mi);
mi := TMenuItem.Create(Button);
mi.Caption := 'Önceki Boyut';
mi.OnClick := RestoreMDIWindow;
mi.Bitmap.Handle := LoadBitmap(0, PChar(OBM_RESTORED));
Popup.Items.Add(mi);
mi := TMenuItem.Create(Button);
mi.Caption := 'Simge Durumuna Küçült';
mi.OnClick := MinimizeMDIWindow;
mi.Bitmap.Handle := LoadBitmap(0, PChar(OBM_REDUCED));
Popup.Items.Add(mi);
mi := TMenuItem.Create(Button);
mi.Caption := 'Ekranı Kapla';
mi.OnClick := MaximizeMDIWindow;
mi.Bitmap.Handle := LoadBitmap(0, PChar(OBM_ZOOMD));
Popup.Items.Add(mi);
mi := TMenuItem.Create(Button);
mi.Caption := '-';
Popup.Items.Add(mi);
mi := TMenuItem.Create(Button);
mi.Caption := 'Pencereyi Kapat';
mi.OnClick := CloseMDIWindow;
Popup.Items.Add(mi);
mi := TMenuItem.Create(Button);
mi.Caption := '-';
Popup.Items.Add(mi);
mi := TMenuItem.Create(Button);
mi.Caption := 'İptal';
Popup.Items.Add(mi);
mi := TMenuItem.Create(Button);
mi.Caption := '-';
Popup.Items.Add(mi);
mi := TMenuItem.Create(Button);
mi.Caption := 'Triotek A.Ş';
mi.OnClick := ClickTriotekWindow;
Popup.Items.Add(mi);
Popup.OnPopup := OnPopupMenu;
Button.PopupMenu := Popup;
InstanceChildWndProc := MakeObjectInstance(ChildWndProc);
OldChildWndProc := Pointer(GetWindowLong(Handle,GWL_WNDPROC));
SetWindowLong(Handle, GWL_WNDPROC, Longint(InstanceChildWndProc));
end;
destructor TChild.Destroy;
begin
SetWindowLong(Handle, GWL_WNDPROC, Longint(OldChildWndProc));
FreeObjectInstance(InstanceChildWndProc);
inherited Destroy;
end;
procedure TChild.OnPopupMenu(Sender: TObject);
begin
if GetTopWindow(ToolBar.Form.ClientHandle)=Handle then
Popup.Items[0].Enabled := False
else
Popup.Items[0].Enabled := True;
if IsIconic(Handle) then begin
Popup.Items[2].Enabled := True;
Popup.Items[3].Enabled := False;
Popup.Items[4].Enabled := True;
end
else begin
Popup.Items[3].Enabled := True;
if IsZoomed(Handle) then begin
Popup.Items[2].Enabled := True;
Popup.Items[4].Enabled := False;
end
else begin
Popup.Items[2].Enabled := False;
Popup.Items[4].Enabled := True;
end;
end;
end;
///
procedure TChildForm.ChildWndProc(var Message: TMessage);
begin
case Message.Msg of
WM_GETTEXT:
begin
Message.Result:= CallWindowProc(OldChildWndProc, Handle, Message.Msg, Message.WParam, Message.LParam);
Button.Caption := Copy(PChar(Message.LParam),1,12);
if Length(PChar(Message.LParam))>12 then begin
Button.Caption := Button.Caption + ' ...';
Button.Hint := PChar(Message.LParam);
Button.ShowHint := True;
end
else begin
Button.Hint := '';
Button.ShowHint := False;
end;
Exit;
end;
WM_MDIACTIVATE:
begin
if HWND(Message.LParam)=Handle then Button.Down := True;
if HWND(Message.WParam)=Handle then Button.Down := False;
end;
WM_DESTROY:
begin
Popup.Free;
Button.Free;
SetWindowLong(Handle, GWL_WNDPROC, Longint(OldChildWndProc));
FreeObjectInstance(InstanceChildWndProc);
end;
WM_SYSCOMMAND:
begin
if Message.WParam = SC_MINIMIZE then
begin
///Self.Popup.
// Self.MinimizeMDIWindow(nil);
//ShowMessage('TEST ');
// SetWindowLong(Handle, GWL_HINSTANCE, Longint(ChildWndProc()));
// ShowWindow(Form.ClientHandle,SW_HIDE);
ShowWindow(Handle,SW_MINIMIZE);
ShowWindow(Handle,SW_HIDE);
// end;
end;
end;
end;
Message.Result:= CallWindowProc(OldChildWndProc,Handle, Message.Msg, Message.WParam, Message.LParam);
// SetWindowLong()
end;
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
-
- Üye
- Mesajlar: 25
- Kayıt: 27 Nis 2005 02:09
benim bildiğim kadarıyla yavru form lardan (mdichild) bir tanesinin windowstate ini değiştirdinmi (yalnızca maximize ve minimize için) diğerleride o şekilde görünür.
mdichild lardan birisi ekranı kaplamışken bir başkasının ekranı kaplaması önlenebiliyorsa lütfen anlatın bu benimde işime yarar.
ayrıca tasarım esnasında bir yavru formun boyutunu nasıl ayarladınsa çalışma esnasında öyle gözüksün istiyorsan yavru formun "position" ını "poDefaultPosOnly" yapabilirsin denedim oluyo.
kolay gelsin
mdichild lardan birisi ekranı kaplamışken bir başkasının ekranı kaplaması önlenebiliyorsa lütfen anlatın bu benimde işime yarar.
ayrıca tasarım esnasında bir yavru formun boyutunu nasıl ayarladınsa çalışma esnasında öyle gözüksün istiyorsan yavru formun "position" ını "poDefaultPosOnly" yapabilirsin denedim oluyo.
kolay gelsin
- Arkadaşlar buradan sormak için sarf ettiğiniz zamanı Maximize anahtarı vererek aramak için harcasanız sonuca daha hızlı kavuşacaktınız..
- En azından viewtopic.php?t=6307&highlight=maximize linkine bir bakın
Hala çözemiyorsanız denediğiniz şekli anlatın ona göre çözüm üretelim...

- En azından viewtopic.php?t=6307&highlight=maximize linkine bir bakın
