Taskbar üzerinde acilan form içinde form

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
skyking
Üye
Mesajlar: 136
Kayıt: 09 Kas 2005 12:52
Konum: Antalya

Taskbar üzerinde acilan form içinde form

Mesaj gönderen skyking »

arkadaşlar slm

Kod: Tümünü seç

procedure Tliste.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
 with Params do begin
   ExStyle := ExStyle or WS_EX_APPWINDOW;
    WndParent := GetDesktopwindow;
 end;
yeni bir forum yaratıyorum (form adı:liste1) tasbardada yeni bir program gibi acılıyor
bu formun içinden (task barda acılmayan) yeni bir form (form adı:arama) acıyorum arama.showmodal gibi
ilk actıgım formu(liste1) gizliyor
buna nasıl bir çözüm üretebilirim?
formların sytle fsstyleontop
yapıncada herzaman ekranın en ustunde kalıyor
liste form gozukurken arama formunuda gormek istiyorum
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

hocam bunu formda daha öncede bir arkadaş sormuştu..Bende yine aynı cevabı yazmıştım.Dediğin şekilde yani formları taskbarda ayrı bir program gibi göstermek çok sıkıntılı durumlar yaratabiliyor.Birini sen yazmışsın zaten bunun çözümü var ama işi tamamen çözmüyor.Örneğin showmessage,applicationmessagebox dada aynı işlem olacak yani taskbarda gösterdiğin form küçülecek main form açılacak.Hadi message komutlarını kullanmadım diyelim.Programında bir hata meydana geldiğinde windowsun verdiği mesaj da programını kitleyecek.Yok ben bu şekilde yapcam dersen liste adlı formun üzerinde gözükmesi gereken arama adlı forma şu kodları yazarak arama formunun parentini liste1 formu olarak atamalısın.

Kod: Tümünü seç


    procedure CreateParams(var Params: TCreateParams); override;


Kod: Tümünü seç

inherited; 
Params.WndParent := liste1.Handle;
Bu şekilde sanırım sorunun çözülür ancak arama formunu artık liste1 formundan başka formdan açamazsın,her forma ayrı arama formları yapman lazım v.s.
Ama sana tavsiyem projen çok ilerlemediyse bu sistemi değiştir.

Kolay gelsin.
Kullanıcı avatarı
skyking
Üye
Mesajlar: 136
Kayıt: 09 Kas 2005 12:52
Konum: Antalya

Mesaj gönderen skyking »

arkadaslar aslında bende task barda formalrı acıp taskbardaki program başlıkalrını cogaltmak hiç hosuma gitmiyor ama ne yapalım artık patrona ne dediysem ikna edemedim

illa acılcakmıs micro faln acılıyormus neyse 2 gunumu aldı ama sonunda
amacıma ulastım uyarı mesajı için bir form yapın ve o formda gosterin daha gorsel oluyor birde showmodal olarak cagırısanız tum program o işin birmesini bekliyor onun yerine show ile cagırın formları

ben soyle yaptım

Kod: Tümünü seç

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
    fatfrm:array [0..1] of  TForm;
  public
    { Public declarations }

  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
fatfrm[0]:=TForm2.Create(self);
fatfrm[0].Show;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
fatfrm[1]:=TForm2.Create(self);
fatfrm[1].Show;
end;

end.
form2 içerigi

Kod: Tümünü seç

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
     procedure CreateParams (var Params : TCreateParams); override;
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

uses Unit3;

{$R *.dfm}
procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
 with Params do begin
    ExStyle := ExStyle or WS_EX_APPWINDOW;
    WndParent := GetDesktopwindow;
  end;
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
if not Assigned(form3) then
form3:=TForm3.Create(self);
form3.Show;


end;


end.
form3 ise

Kod: Tümünü seç

unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm3 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
    procedure CreateParams (var Params : TCreateParams); override;
  public
    { Public declarations }
  end;

var
  Form3: TForm3;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm3.CreateParams(var Params: TCreateParams);
begin
  inherited;
     if (Parent <> nil) or (ParentWindow <> 0) then
        Exit; // must not mess with wndparent if form is embedded

      if Assigned(Owner) and (Owner is TWincontrol) then
       Params.WndParent := TWinControl(Owner).handle
      else
      if Assigned(Screen.Activeform) then
      Params.WndParent := Screen.Activeform.Handle
end;

procedure TForm3.Button1Click(Sender: TObject);
begin
//Form2(Owner).Button1.Caption:='10';
(Owner as TForm2).Button1.Caption:=edit1.text;
end;

procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
end;

procedure TForm3.FormDestroy(Sender: TObject);
begin
Form3:=nil;
end;
işinize yarar umarım ama ben tavsiye etmiyorum
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

ızgara formuna arama formunu kapsayacak bir panel koyup, arama formunun parentine paneli atasanız bir form ikisine kapsardı.

birde sizin yöntemde formlardan birisi küçültüldüğünde ne olacak uygulama tepkisi geri planda kitlenmiş gibi kalakalma durumları vs de oluyor.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

skyling projenin büyüklüğünü bilmiyorum yani kaç modül var kaçtane farklı form var v.s ama bu yol iyi bir yol değil patronunu ikna etmeye çalış.Programcıysa kendi yapsın değilse teknik olarak zaten sana karışması yanlış.Aşağıdaki linkte micro gibi yaygın iki program alan Logo ve ETA SQL'in pencereleme sitemini nasıl çözdükleri var.Eminim 2yöntemde senin yaptığından daha sağlıklıdır.Ben logo'daki gibi bir sistem uyguluyorum. Kolay gelsin..

http://www.tekkalem.com.tr/pencereler.html
Cevapla