PDA

View Full Version : مشكل در راست چين كردن page control



pandco
سه شنبه 22 دی 1388, 14:14 عصر
با سلام خدمت دوستان ارجمند

من با كد زير page control رو راست چين ميكنم اول اينكه راست چين ميشه ولي وقتي در تب هاش حركت مي كنم هرچي اطلاعات در تب ها هستش ديگه ديده نميشه و بايد از برنامه خارج بشم دوباره اجراش كنم تا درست بشه و دوم اينكه با VCL مشكل داره.
اگه امكان داره منو تو اين زمينه راهنمايي كنيد واقعات خيلي ضروري هستش

مچركم دوستان

Const
WS_EX_NOINHERITLAYOUT = $00100000; // Disable inheritence of mirroring by children
WS_EX_LAYOUTRTL = $00400000; // Right to left mirroring

{$R *.dfm}

procedure SetWinControlBiDi(Control: TWinControl);
var
ExStyle: Longint;
begin
ExStyle := GetWindowLong(Control.Handle, GWL_EXSTYLE);
SetWindowLong(Control.Handle, GWL_EXSTYLE, ExStyle or WS_EX_RTLREADING or WS_EX_RIGHT
or WS_EX_LAYOUTRTL or WS_EX_NOINHERITLAYOUT );
end;

---
SetWinControlBiDi(PageControl1);

Felony
سه شنبه 22 دی 1388, 15:33 عصر
احتمالا از ورژن 2009 استفاده میکنید درسته ؟
تو دلفی 2010 همچین مشکلی نیست ، بهتره به 2010 مهاجرت کنید .

pandco
سه شنبه 22 دی 1388, 16:04 عصر
دوست گرامي از دلفي 2007 استفاده ميكنم.

pandco
پنج شنبه 24 دی 1388, 10:03 صبح
سلام دوستان
كسي نيست يه لطفي بكنه تا اين مشكل رو حل كنيم
از كامپوننت DevExpress هم استفاده كردم اونم نشد.

مچكرم

pandco
سه شنبه 29 دی 1388, 15:09 عصر
با سلام خدمت دوستان

اگر page control در دلفي 2007 براي راست چين كردن راه حلي نمي باشد حداقل دوستان يه راهنمايي كنن كه من 4 تا فرم دارم ميخوام تو يك پنجره باشه با چه ابزاري اينو طراحي كنم و در فرم چهارمي گزينه ذخيره باشه.

با تشكر

جواد ملاولی
سه شنبه 29 دی 1388, 17:37 عصر
سلام.
میتونی از PageControl کامپوننت Raize استفاده کنی؛ خودش قابلیت راست به چپ داره.
موفق باشید.

pandco
پنج شنبه 01 بهمن 1388, 16:08 عصر
با تشكر از جناب آقاي جواد ملاولي مشكل من با كامپوننت Raize حل شد.

gogolo
شنبه 22 اسفند 1388, 08:08 صبح
برای حل این مشکل شما می تونید ،
همان طور که دوستان گرامی گفتند
به دلفی 2010 مراجعه کنید چون این مشکل در ان حل شده
از کامپوننت Raize استفاده کنید
حال اگر مایل به استفاده از موارد بالا نیستید
ومجبورید مثل من که هنوز از دلفی 7 استفاده می کنم استفاده کنید
می تونید از کد زیر استفاده کنید
ابتدا کد زیر را را در رویداد OnCreate فرم اصلی قرار دهید

procedure TForm1.FormCreate(Sender: TObject);
var
j:Longint;
begin
j := GetWindowLong(PageControl1.Handle, GWL_HINSTANCE);
SetWindowLong( PageControl1.Handle, GWL_EXSTYLE, j);
end;

و برای حل کردن مشکل ناپدید شدن اشیاء باید ان اشیاء را برای هر بار نمایش رفرش و یا خاصیت Visible غیر فعال و فعال کنید

مثلا در هر کدام از TabSheet یک Panel قرار دهید و کد زیر را برای رویداد OnShow هر کدام از TabSheet قرار بنویسید
Panel1.Visible:=false;
Panel1.Visible:=true;

بخشید اگر بد پیام می گذارم

حسین خانی
شنبه 22 اسفند 1388, 08:59 صبح
با سلام :لبخندساده:


و برای حل کردن مشکل ناپدید شدن اشیاء باید ان اشیاء را برای هر بار نمایش رفرش و یا خاصیت Visible غیر فعال و فعال کنید

مثلا در هر کدام از TabSheet یک Panel قرار دهید و کد زیر را برای رویداد OnShow هر کدام از TabSheet قرار بنویسید
Panel1.Visible:=false;
Panel1.Visible:=true;

دوست عزیز من هم از دلفی 7 استفاده می کنم کد شمارو تست کردم !
PageControl راست چین میشه ! ولی با روشی که گفتید مشکل ناپدید شدن اشیاء حل نمیشه !!! ؟؟؟

gogolo
شنبه 22 اسفند 1388, 11:27 صبح
سلام دوست گرامی
من چندین بار از روشی که گفتم استفاده کردم
وقتی pagecontrol را به محیط اضافه کردی روش کلیک راست کن و new page را بزن
حالاروی tabsheet1 یه پانل اضافه کن و هر شی را که خواستی روی پنل اضافه کن
حالا در رویداد on show شی tabsheet1 کد زیر را اضافه کن
Panel1.Visible:=false;
Panel1.Visible:=true;

اگه نشد بگو تا براد پروژشو بفرستم

جواد ملاولی
شنبه 22 اسفند 1388, 14:15 عصر
تو دلفی 2010 همچین مشکلی نیست ، بهتره به 2010 مهاجرت کنید .
سلام. در دلفي 2010 چه جوري بايد راست چينش بكنيم؟

حسین خانی
شنبه 22 اسفند 1388, 14:53 عصر
با سلام :لبخندساده:

سلام دوست گرامی
من چندین بار از روشی که گفتم استفاده کردم
وقتی pagecontrol را به محیط اضافه کردی روش کلیک راست کن و new page را بزن
حالاروی tabsheet1 یه پانل اضافه کن و هر شی را که خواستی روی پنل اضافه کن
حالا در رویداد on show شی tabsheet1 کد زیر را اضافه کن
Panel1.Visible:=false;
Panel1.Visible:=true;
اگه نشد بگو تا براد پروژشو بفرستم
دوباره تست کردم و شد ...!!!
ولی مثل اینکه فقط با شی Panel سازگار هستش و همچنین اگر داخل یکی از TabSheet ها Panel اضافه نکنی و از اشیاء دیگه ای ( البته همه اشیاء رو تست نکردم ! ) استفاده کنی ، به همین خاطر دوباره با مشکل ناپدید شدن اشیاء مواجه میشی !!!
به هر حال با اضافه کردن Panel مشکل حل میشه !
ممنون و موفق باشید ...

gogolo
یک شنبه 23 اسفند 1388, 18:28 عصر
سلام
با تشکر از اقای hossein.kh مشکل ناپدید شدن اشیاء را بررسی کردند
کد قبلی با سه tabsheet جواب می دهد ولی کد زیر با تمام tabsheet ها جواب می دهد

procedure TForm1.FormCreate(Sender: TObject);
var
j:Longint;
begin
j := GetWindowLong(PageControl1.Handle, GWL_HINSTANCE);
SetWindowLong( PageControl1.Handle, GWL_EXSTYLE, j);
end;
procedure TForm1.PageControl1Change(Sender: TObject);
var
i:integer;
begin
for i := 0 to ComponentCount - 1 do
begin
if (Components[i] is TPanel) then
begin
TPanel(Components[i]).visible:=false;
TPanel(Components[i]).visible:=true;
end;
end;
end;

پنل ها را به tabsheet ها اضافه کنید و روی پنل ها شئ قرار دهید و برای هر شئ که جواب نداد کد جدا بنویسید.