08-04-2019, Saat: 12:57
Merhaba yine bir sorun ile sizlerleyim elimden geldiğince izah etmeye çalışacağım,
Bir Main formum var(WindowsState). Bu form üzerinde show olarak açılan diğer formlarım mevcut. Formlarım normal form böyle olmak zorunda. MainFormda altta pencereleri gösteren benim yazdığım bir componentim var. Bunun amacı form minimize edildiğinde veya hide edildiğinde pencereye son form görüntüsü ile ekleyerek formlar arasında pencereden gezmek.
Formlar minimize edildiğinde pencereye ekliyorum. Veya aşağıdan pencereye tıklanarak gizliyse gösterilmesini, gösteriliyor ise formun gizlenmesini ve pencereler arası geçişi yapıyorum.
Bir form gösteriliyor iken Ana forma tıklanırsa veya deactive arka plana düşürtülürse küçültülüp pencerelere eklenecek. Peki bunuda yapıyorum sıkıntı yok. Kodumuz şu;
Formu deactive duruma gelince aşağı menüye eklendi ve gizlendi. sonra menüden tıklandı ve form açıldı. Buraya kadarda sorun yok. Sorun bundan sonra.
Tekrar alt menüye tıklanınca form gizlenmiyor ve gösteriliyor. Peki kodumuz ne?
Hatanın nerede olduğunu biliyorum fakat aklıma gelen bir çözümüm yok.
Hatamız şu form gözüküyor iken alt pencereden tıklanıp gizlenilmeye çalışılırsa önce deactivate çalışıyor gizleniyor. Sonra butonun click olayı çalışıyor ve bakıyor ki gizli tekrardan gösteriyor. Yani butonlarım main formda olduğu için tıklanıldığı anda diğer form deactivate'e düşüyor.
Bunun için nasıl bir yol izlenilmeli.
Bir Main formum var(WindowsState). Bu form üzerinde show olarak açılan diğer formlarım mevcut. Formlarım normal form böyle olmak zorunda. MainFormda altta pencereleri gösteren benim yazdığım bir componentim var. Bunun amacı form minimize edildiğinde veya hide edildiğinde pencereye son form görüntüsü ile ekleyerek formlar arasında pencereden gezmek.
Formlar minimize edildiğinde pencereye ekliyorum. Veya aşağıdan pencereye tıklanarak gizliyse gösterilmesini, gösteriliyor ise formun gizlenmesini ve pencereler arası geçişi yapıyorum.
Bir form gösteriliyor iken Ana forma tıklanırsa veya deactive arka plana düşürtülürse küçültülüp pencerelere eklenecek. Peki bunuda yapıyorum sıkıntı yok. Kodumuz şu;
procedure TFrmAltForm.FormDeactivate(Sender: TObject); Var Ind : Integer; xBuldum : Boolean; begin if xSKScreensHotForm <> nil then begin xBuldum := False; for Ind := 0 to Pred(xSKScreensHotForm.SKItems.Count) do begin if xSKScreensHotForm.SKItems[Ind].IsForm = Self then begin xBuldum := True; Break; end; end; if not xBuldum then xSKScreensHotForm.AddItem(Self,GetFormScreensHot(Self)); Hide; end; end;
Formu deactive duruma gelince aşağı menüye eklendi ve gizlendi. sonra menüden tıklandı ve form açıldı. Buraya kadarda sorun yok. Sorun bundan sonra.
Tekrar alt menüye tıklanınca form gizlenmiyor ve gösteriliyor. Peki kodumuz ne?
procedure TScreenImageButton.Click; begin inherited; if IsForm <> nil then begin if IsForm.Showing then IsForm.Hide else IsForm.Show; end; end;
Hatanın nerede olduğunu biliyorum fakat aklıma gelen bir çözümüm yok.
Hatamız şu form gözüküyor iken alt pencereden tıklanıp gizlenilmeye çalışılırsa önce deactivate çalışıyor gizleniyor. Sonra butonun click olayı çalışıyor ve bakıyor ki gizli tekrardan gösteriyor. Yani butonlarım main formda olduğu için tıklanıldığı anda diğer form deactivate'e düşüyor.
Bunun için nasıl bir yol izlenilmeli.
Yalnızım ama bir kente yürüyen ordu gibiyim, edebiyattan kaçınmalıyım..