Form Style özelliği ile ilgili

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Serim
Üye
Mesajlar: 194
Kayıt: 08 Ara 2004 03:32
Konum: Konya

Form Style özelliği ile ilgili

Mesaj gönderen Serim »

merhaba arkadaşlar,

Programımda karşılaştığım sorunu forumda arattım fakat tam istediğim şeyi bulamadım.

Kod: Tümünü seç

procedure YeniFormOlustur;
Var
  xxx    : TForm;
begin
     Inc(xFormNumarasi);
     xxx := Tnotekle.Create(Application);
     With xxx do
     begin
          Name      := Format('Form_%.3d', [xFormNumarasi]);
          Caption   := Name;
          Width     := 212;
          Height    := 188;
          Visible   := True;
          Left      := xFormNumarasi*25;
          Top       := xFormNumarasi*25;
          Tag       := xFormNumarasi;
     end;
end;
Yukarıdaki procedure ile Formumu butona bastıkça create ediyorum.Sorunum FormStyle özelliği ile ilgili..
Sanırım formumu manuel olarak oluşturduğum için formstyle özelliğine fsstayontop dememe rağmen notlar
arasında o formu en üste alsada örneğin photoshop u çalıştırdım diyelim o form arkada kalıyor, en üstte göstermiyor.
Bu konuda bilgisi olan varsa paylaşırsanız çok memnun kalıcam :wink:
Bide tray icon yaptım acaba bunla bi ilgisi varmıdır :?: :?: :?: :oops:

Herkese iyi çalışmalar...
Bilginin temelini sağlam at depremde zarar görmesin
Kullanıcı avatarı
Serim
Üye
Mesajlar: 194
Kayıt: 08 Ara 2004 03:32
Konum: Konya

Mesaj gönderen Serim »

ben netten konuyla ilgili bazı kodlar buldum :

Kod: Tümünü seç

type
 TCreateParams = record
  Caption: PChar;                      {the window text or caption}
  Style: DWORD;                        {style flag}
  ExStyle: DWORD;                      {extended style flag}
  X, Y: Integer;                       {Left and Top property}
  Width, Height: Integer;              {Width and Height property}
  WndParent: HWND;                     {Parent window}
  Param: Pointer                       {additional data}
  WindowClass: TWndClass;              {window calss information}
  WinClassName: array[0..63] of Char;  {class name}
end;

Kod: Tümünü seç

...
 private
  procedure CreateParams
     (var Params: TCreateParams); override;
...

Kod: Tümünü seç

procedure TForm.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);

  {code to alter the CreateParams values}
  
end;

Kod: Tümünü seç

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do begin
    ExStyle := ExStyle or WS_EX_TOPMOST;
    WndParent := GetDesktopwindow;
  end;
end;
Sorumun cvbının bu kodlar olabileceğini düşünüyorum fakat anaformdan butona basınca o an hangi form aktifse o formu en üste alsın nasıl dicem bulamadım :oops:

Şimdiden teşekkürler....
Bilginin temelini sağlam at depremde zarar görmesin
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Kod: Tümünü seç

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
  private
    procedure CreateParams(var Params: TCreateParams); override;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CreateParams(var Params: TCreateParams); 
begin 
  inherited CreateParams(Params); 
  with Params do begin 
    ExStyle := ExStyle or WS_EX_TOPMOST; 
    WndParent := GetDesktopwindow; 
  end; 
end;

end.
Kolay gelsin...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
Serim
Üye
Mesajlar: 194
Kayıt: 08 Ara 2004 03:32
Konum: Konya

Mesaj gönderen Serim »

Adminim hüsonetim ama ben ana formdan butona basınca manuel olarak create ettiğim formlar üzerinde bu işlemi yapmak istiyorum.Sizin yazdığınız kodları zaten bende yazmıştım :oops: Konuyu biraz daha açacak olursam mesela projeyi çalıştırdım. (Tray iconla çalıştım) Menüdeki "Not ekle" butonuna bastım ve 5 tane not formu açtım. Sonra menüden "Her zaman üstte" butonuna bastığım zaman aktif olan formun hep üstte durmasını istiyorum.
umarım derdimi anlatabilmişimdir....

iyi çalışmalar...
Bilginin temelini sağlam at depremde zarar görmesin
Kullanıcı avatarı
Serim
Üye
Mesajlar: 194
Kayıt: 08 Ara 2004 03:32
Konum: Konya

Mesaj gönderen Serim »

yaw arkadaşlar forma aşağıdaki kodları yazınca her açılan formu taskbarda gösteriyor.ben onu gizlemek için ne kadar uraşmıştım :cry: :P

Kod: Tümünü seç

procedure Tnotekle.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do begin
    ExStyle := ExStyle or WS_EX_TOPMOST;
    WndParent := GetDesktopwindow;
  end;
end;
hem istediğim formu en üstte tutmak hemde taskbarda göstermemek istiyorum :cry: çokmu şey istiyorum :roll:
Bilginin temelini sağlam at depremde zarar görmesin
Kullanıcı avatarı
Serim
Üye
Mesajlar: 194
Kayıt: 08 Ara 2004 03:32
Konum: Konya

Mesaj gönderen Serim »

ya biraz kendi kendime yazıyomuşum gibi oluyo ama:D butona basınca formu stayontop yapmanın kodlarını buldum .

Kod: Tümünü seç

procedure Tnotekle.NotuneAl1Click(Sender: TObject);
begin
     NotuneAl1.Checked := NOT NotuneAl1.Checked;
     if NotuneAl1.Checked then SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width,Height,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE)
    else
    SetWindowPos(Handle,HWND_NOTOPMOST,Left,Top,Width,Height,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end;
ama tek sorun stayontop yapmak istediğim formu kodla create ettiğim için sanırım bu kodlar benim programımda çalışmıyor. başka bi proje açıp denedim ordada eğer form1 i (mainform) stayontop yap dersem yapıyor, form2 yi yap dersem yapmıyor ( form 2yi kodla create etsemde etmesemde) :roll: ya acaba bu kod sadece anaformumu en üstte tutuyorkii :?:
of yaa yardım edicek, fikir verebilcek biri varsa lütfen cvp yazabilirmi :cry: :cry: :cry:
Bilginin temelini sağlam at depremde zarar görmesin
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Handle yerine create ettiğin formun handle ını yaz :idea:

Kod: Tümünü seç

procedure Tnotekle.NotuneAl1Click(Sender: TObject);
begin
  NotuneAl1.Checked := NOT NotuneAl1.Checked;
  if NotuneAl1.Checked then SetWindowPos(frm_BenimFormum.Handle, HWND_TOPMOST,Left,Top,Width,Height,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE)
  else
  SetWindowPos(frm_BenimFormum.Handle, HWND_NOTOPMOST,Left,Top,Width,Height,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end;
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
Serim
Üye
Mesajlar: 194
Kayıt: 08 Ara 2004 03:32
Konum: Konya

Mesaj gönderen Serim »

@rsimsek öncelikle cvp verdiğiniz çooooook teşekkür ederim:))
ama başka bi projedede denedim sadece mainformu en üstte tutuyor bu kodlar :oops: bir ikinciside bu soruyu ilk sorduğum mesajta formu nasıl create ettiğimin kodlarını atmıştım.orda formun ismi her create ettiğimde değişiyorya (Form_001,Form_002... şeklinde) o yüzden benim_formum.handle diyemiyorum hata veriyor:( o forma ulaşıp handle ını vermem gerek.

ama dediğim gibi anaform dışındakileri en üste almıyor zaten :cry:
herkese kolay gelsin.Allah (c.c.) banada sabır versin :P :)
Bilginin temelini sağlam at depremde zarar görmesin
Kullanıcı avatarı
Serim
Üye
Mesajlar: 194
Kayıt: 08 Ara 2004 03:32
Konum: Konya

Mesaj gönderen Serim »

Sorunumu hallettim.

Kod: Tümünü seç

procedure Tnotekle.NotuneAl1Click(Sender: TObject);
begin
       NotuneAl1.Checked := NOT NotuneAl1.Checked;
       timer1.Enabled:=notuneal1.Checked;
       if NotuneAl1.Checked then
          SetWindowPos(Handle,HWND_TOPMOST,Left,Top,Width,Height,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE)
       else
           SetWindowPos(Handle,HWND_NOTOPMOST,Left,Top,Width,Height,SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
end;

Kod: Tümünü seç

procedure Tnotekle.Timer1Timer(Sender: TObject);
begin
     If NotuNeAl1.Checked then
     if GetForeGroundWindow <> Handle then;
     BringToFront;
end;
Kolay gelsin..
Bilginin temelini sağlam at depremde zarar görmesin
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Çözdüğüne sevindim..

Create ettiğin form bir değişken değil mi?

Kod: Tümünü seç

with TForm.Create do ..
şeklinde mi Create ediyorsun?
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
menderes

Mesaj gönderen menderes »

Herkese kolay gelsin, işimi gördüm demişsiniz ama ilave olsun, işinize yarayabilir belki;
Bu şekilde istediğiniz form checked olduğu sürece hep üstte kalacak....

Kod: Tümünü seç

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.checked=true then
begin
//Her zaman Üstte
setwindowpos(Form1.windowhandle,hwnd_topmost,0,0,1,1,swp_nomove or swp_nosize);
end
else
begin
//üstte değil
setwindowpos(Form1.windowhandle,hwnd_notopmost,0,0,1,1,swp_nomove or swp_nosize);
end;
end;
Kullanıcı avatarı
Serim
Üye
Mesajlar: 194
Kayıt: 08 Ara 2004 03:32
Konum: Konya

Mesaj gönderen Serim »

@rsimsek demişki:
Çözdüğüne sevindim..

Create ettiğin form bir değişken değil mi?
Kod:
with TForm.Create do ..
şeklinde mi Create ediyorsun?
@rsimsek ewt formu dediğiniz şekilde create ediyorum : )

@menderes sizede çok teşekkür ederim. Kodlarınızı "kod arşivimde" bulundurıcam :D

herkese kolay gelsin...
Bilginin temelini sağlam at depremde zarar görmesin
Cevapla