Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Groupbox Runtime Resize
#1
Benim böyle bir groupbox'um var, çalışırken formu sürükleyebiliyorum, bunun boyunutu da değiştirebilmek istiyorum, kulağından çekince uzasın Wink

MkrWY1.png





Güzel bir çözüm buldum,
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol 'teki Tuğrul hocamın yazısından yola çıkarak


type

TGroupBox = class(Vcl.StdCtrls.TGroupBox)
   private
     procedure CreateParams(var Params: TCreateParams);
  protected
   procedure MouseDown(Button:TMouseButton;Shift:TShiftState;X,Y:integer); override;
 end;

 TWebForm = class(TForm)
   frxTBPanel1: TfrxTBPanel;
   ComboBox1: TComboBox;
   Button1: TButton;
   ComboBox2: TComboBox;
   WebBrowser1: TWebBrowser;
   ComboBox3: TComboBox;
   Edit1: TEdit;
   Edit2: TEdit;
   ....................................


procedure TGroupBox.CreateParams(var Params: TCreateParams);
begin
    inherited;
 Params.Style := Params.Style or WS_SIZEBOX  ;
end;

procedure TGroupBox.MouseDown(Button: TMouseButton; Shift: TShiftState; X,
 Y: integer);
const
SC_DRAGMOVE = $F012;
SC_DRAGSIZE = $f008;
begin
 inherited;
 ReleaseCapture;
 Perform (WM_SYSCOMMAND,SC_DRAGMOVE,0);
 Perform (WM_SYSCOMMAND,SC_DRAGSIZE,0);
end;


Neler olduğunu anlatan minik bir video


Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#2
Merhaba,
Yapmak istediğiniz böylebirşey mi?

screen.gif


Sadece Groupbox için mi bunu yapmak istiyorsunuz Form boyutları değişmeden..
Cevapla
#3
(25-10-2016, Saat: 10:12)Cyber Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,
Yapmak istediğiniz böylebirşey mi?
Sadece Groupbox için mi bunu yapmak istiyorsunuz Form boyutları değişmeden..


Form Sabit içerisindeki groupbox için bunu yapmak istiyorum
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#4
GroupBox'ın OnMouseDown olayında aşağıdakileri yazıp deneyebilirsin:

const
 SC_DRAGSIZE = $F008;
begin
 ReleaseCapture;
 GroupBox1.Perform(WM_SYSCOMMAND, SC_DRAGSIZE, 0);
end;
There's no place like 127.0.0.1
WWW
Cevapla
#5
(25-10-2016, Saat: 10:47)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlGroupBox'ın OnMouseDown olayında aşağıdakileri yazıp deneyebilirsin:

const
 SC_DRAGSIZE = $F008;
begin
 ReleaseCapture;
 GroupBox1.Perform(WM_SYSCOMMAND, SC_DRAGSIZE, 0);
end;

Bu kod ile araları iyi gitmediği için sapıtıyordu, neyse groupboxa bir buton atıp kodları oraya yazınca işimi gördü bu da yeterli benim için.
Teşekkürler

procedure TWebForm.ControlMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if  (Sender is TWinControl) then
begin
  inReposition:=True;
  SetCapture(TWinControl(Sender).Handle);
  GetCursorPos(oldPos);
end;
end;
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#6
"Bu kod ile araları iyi gitmediği için sapıtıyordu": ne demek sapıtıyordu? Huh

Gönderdiğim kod TWinControl'den türemiş tüm bileşenler için geçerlidir ama nesye sorun çözülmüşse sorun yoktur Smile

Ama çözüm için gönderdiğin kodlar maalesef kimsenin işine yaramaz. Eksik bilgilendirme var Sad 
Sadece OnMouseDown olayına senin gönderdiğin kodları yazsak sorun çözülecek mi? Bence hayır. Yada inReposition, oldPos nedir, nereden geldiler vs.?
Aynı sorunu yaşayanlara yol göstermek açısından daha fazla açıklamaya ihtiyaç var gibi...
There's no place like 127.0.0.1
WWW
Cevapla
#7
(25-10-2016, Saat: 11:02)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol"Bu kod ile araları iyi gitmediği için sapıtıyordu": ne demek sapıtıyordu? Huh

Gönderdiğim kod TWinControl'den türemiş tüm bileşenler için geçerlidir ama nesye sorun çözülmüşse sorun yoktur Smile

Ama çözüm için gönderdiğin kodlar maalesef kimsenin işine yaramaz. Eksik bilgilendirme var Sad 
Sadece OnMouseDown olayına senin gönderdiğin kodları yazsak sorun çözülecek mi? Bence hayır. Yada inReposition, oldPos nedir, nereden geldiler vs.?
Aynı sorunu yaşayanlara yol göstermek açısından daha fazla açıklamaya ihtiyaç var gibi...

Benim paylaştığım kodlar groupboxu tutup sağa sola sürüklemek için
OnMouseDown olayında benim daha önce yazdığım ve senin verdiğin kodu kullanınca sapıtıyor.
ayrı ayrı kullanımda her ikisi de görevini yerine getiriyor sapıtması normal bence de, OnMouseDown olayında iki farklı işlem yapmasını istiyoruz bu durumda.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#8
Sorun çözümlendi. Çözümü ilk mesaja eklendi.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#9
Yalnız şunu da ekleyelim:
senin paylaştığın çözüm o unit içindeki tüm TGroupBox'ları etkiler
Sadece 1 TGroupBox'ın böyle davranmasını istersek ilgili TGroupBox'ın OnMouseDown olayına kodlar yazılmalı.
There's no place like 127.0.0.1
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  [ Çözüldü] Runtime da çıkan hata sebepleri Lord_Ares 8 615 16-03-2018, Saat: 17:11
Son Yorum: Lord_Ares
  cxLookupComboBox (cxgrid) runtime filtreleme MosCom 3 505 23-09-2017, Saat: 16:48
Son Yorum: MosCom
  Runtime da Oluşturulan Formu Showlamak Halil Han Badem 6 517 17-07-2017, Saat: 10:14
Son Yorum: Tuğrul HELVACI



Konuyu Okuyanlar: 1 Ziyaretçi