با سلام
یک شی sFrameBar مجموعه آلفا کنترل روی فرم گزاشتم.
سپس یک Frame به برنامه add کردم .
درون این Frame یک باتن قرار دادم.
چطوری باید کپشن این دکمه که درون این Frame هست رو مثلا از Form Show مقدار دهی کرد.؟
ممنون.کارم گیر کرده.!!
با سلام
یک شی sFrameBar مجموعه آلفا کنترل روی فرم گزاشتم.
سپس یک Frame به برنامه add کردم .
درون این Frame یک باتن قرار دادم.
چطوری باید کپشن این دکمه که درون این Frame هست رو مثلا از Form Show مقدار دهی کرد.؟
ممنون.کارم گیر کرده.!!
از طریق همون شی frame ایی که در فرم ایجاد کردید؛ فرضا:
Form1.MyFrame.MyButton.Caption := 'Test';
وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.
ممنون از استاد بزرگوارم.
نمیدونم چرا اصلا Frame رو نمیشناسه با اینکه یونیتش رو هم use کردم.
اگه محبت کنید نمونه زیر رو یه نگاه بکنید.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, sScrollBox, sFrameBar, sSkinProvider, sSkinManager, StdCtrls;
type
TForm1 = class(TForm)
sFrameBar1: TsFrameBar;
sSkinManager1: TsSkinManager;
sSkinProvider1: TsSkinProvider;
Button1: TButton;
procedure sFrameBar1Items0CreateFrame(Sender: TObject;
var Frame: TCustomFrame);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.sFrameBar1Items0CreateFrame(Sender: TObject;
var Frame: TCustomFrame);
begin
Frame := TFrame2.Create(nil);
end;
end.
آخرین ویرایش به وسیله Mask : یک شنبه 04 دی 1390 در 19:19 عصر
من با اون کامپوننت Alpha کار نکردم و نمیدونم دقیقا قراره با این فریمی که ساختید چیکار کنه، اما کدی که اینجا گذاشتید، از نظر Syntax درست هست؛ و قاعدتا باید یک نمونه از کلاس TFrame2 که در Unit2 تعریف شده را بسازه، و به پارامتر Frame در متد sFrameBar1Items0CreateFrame اختصاص بده. حالا نمیدونم منظورتون از نشناختن Frame دقیقا چی هست؟نمیدونم چرا اصلا Frame رو نمیشناسه با اینکه یونیتش رو هم use کردم.
وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.
ممنونم از استاد عزیز
ببینید : با دستوری که نوشتممنظورتون از نشناختن Frame دقیقا چی هست
Frame := TFrame2.Create(nil);
دقیقا Tframe2 در اولین ایندکس Framebar ساخته میشه.
اما مشکل اصلی من اینه که وقتی روی فرم اصلی برنامم یه دکمه میزارم و میخام دکمه ای که روی Frame هست رو تغییر کپشن بدم.اصلا دلفی میگه من توی فرم اصلی چیزی به نام Frame نمیشناسم .چه برسه که بخام اجازه بدم که دکمه رو تغییر کپشن بدید.
چرا اینطوریه؟
از روی فرم اصلی به ایونتها و خصوصیات کنترلهای موجود روی Frame دسترسی ندارم.
ممنون از اینکه جواب میدید.
راستی پس خود شما برای زیبا سازی برنامتون مگه از چی استفاده میکنید؟
سلام
اول اینکه دلفی دم دست ندارم الان ولی به نظر من و احتمالا دلفی بعد از ساختن فریم باید Frame.Parent:=Form1; رو بنویسی یعنی انکه حتمن پرنت می خواد.
دوم اینکه فریمت تو تابع sFrameBar1Items0CreateFrame تعریف شده و دلفی خارج از اون معلومه که نمیشناستش باید ببینی اسمش قبل از اینکه به تابع پاس بشه چی بوده
ممنون از شما.و تابع sFrameBar1Items0CreateFrame تعریف شده و دلفی خارج از اون معلومه که نمیشناستش
چون ما یونیت مربوط به فریم رو یوز میکنیم در یونیت فرم اصلی . پس باید این فریم و کنترلهاش قابل دسترس باشند.
چرا نیستند رو نمیدونم.دارم دنباله راهه حل میگردم.
در ضمن حتی اگه پرنت فریم رو بزاریم رو Form1 بازم مشکل باقیست.چون ما در حالت دیزاین میخواهیم به مقادیر فریم دسترسی پیدا کنیم.اما نمیشه.
آخرین ویرایش به وسیله Mask : دوشنبه 05 دی 1390 در 14:03 عصر
ممنوا زدو دوست عزیز
مشکلم حل شد.
گفتم بزارم اینجا دوستان استفاده کنند.
تنها جایی که ما دسترسی به مقادیر فرمها داریم همون sFrameBar1Items0CreateFrame هست . که به راحتی با یه هارد کست میشه این تغییر رو ایجاد کرد.
procedure TForm1.sFrameBar1Items0CreateFrame(Sender: TObject;
var Frame: TCustomFrame);
begin
Frame := TFrame2.Create(nil);
TFrame2(Frame).Button1.Caption:='New Caption';
end;
این هم یه نمونه
توجه کن که دکمه اول پرنت نداره و کار نمی کنه
دوم وقتی فورمت از کاستوم فریم مشتق شده نه TFrame2
وای
چقدر گیر داره این فریم.
مشکل اولیه پا برجاست.
با اینکه حین ساخت فریم در فریم بار میشه مقادیر کنترلها رو تغییر داد اما مشکل اصلی میمونه و اونم اینه که الان با یه تایمر میخام مقدار یه لیبل روی فریم رو یکی یکی اضافه کنم.
بازم نمیشه.
چی پیشنهاد میکنید.؟
فقط حین ساخت فریم میشه به کنترلها مقدار داد.
آخرین ویرایش به وسیله Mask : دوشنبه 05 دی 1390 در 18:12 عصر
عزیزم اگه کد من رو دیده بودی می دیدی که کپشن رو در زمان اجرا تغییر دادم
عزیز دل برادر کدتون رو دیدم. کلی هم ازش ایده گرفتم.
اما داستان اینه که چون ما در حالت run time یک نمونه از Frame رو بر روی Frame bare میسازیم. نمیتونیم مقدارش رو بعد از create شدن تغییر بدیم.
منم به خاطر این محدودیت مجبور شدم با یه ترفند مقادیرم رو در یک متغیرکه در فرم اصلی هست، حساب کتاب کنم و با یه تایمر که درون Frame استارت میشه مقدار متغیر رو از فرم اصلی واکشی کنم و درون کنترلهای Frame جاسازی کنم.
فعلا با این روش مشکلم حل شده.جالا اینکه فنی هست و یا بعدا به مشکل بر نخورم.دیگه نمیدونم.