نمایش نتایج 1 تا 17 از 17

نام تاپیک: یه سوال تخصصی و یه سوال غیر تخصصی

  1. #1
    کاربر دائمی آواتار بمب منطقی
    تاریخ عضویت
    مرداد 1382
    محل زندگی
    شمال-ایران
    پست
    1,049

    یه سوال تخصصی و یه سوال غیر تخصصی

    با سلام :

    سوال غیر تخصصی :
    اگه میشه سریال نامبر wise inistaller 8.14 را لطف کنید و به من بگید.

    سوال تخصصی :
    چطور میشه بعد از اجرای برنامه یه فرم را مثلا بعد از کلیک کردن بر روی یه command,ایجاد کرد.
    یعنی فرم قبلا درست نشده باشد , که ما با دستور load یا show انرا ظاهر کنیم. :roll: :(

    با تشکر. :oops: :oops: :P :P

  2. #2

    سلام

    dim f as NEW form
    f.show

  3. #3
    این کار غیر ممکنه, شما میتونید از یک فرم که در حال حاضر در پروژه وجود داره کپی بسازید ولی نمی تونید فرم جدید تولید کنید.

  4. #4
    کاربر دائمی آواتار بمب منطقی
    تاریخ عضویت
    مرداد 1382
    محل زندگی
    شمال-ایران
    پست
    1,049
    با سلام مجدد:

    پس نرم افزارهایی مثل MS word از چه روشی استفاده میکنند وقتی که بر روی گزینه New کلیک میکنیم(در نرم افزار word) و یک پنجره جدید برای تایپ و ویرایش متن باز می شود. :roll:
    راستی اگه میشه به سوال اولم هم جواب بدید. :oops: :oops:

    با تشکر.

  5. #5
    اونها هم به همین شکل یعنی یک فرم که در حال حاضر در پروژه وجود داره استفاده میکنن که معمولا در محیط MDI هستن و خاصیت MDIChild اون فرم True هست.

  6. #6
    اگر منظورتان یک پنحره جدید است فکر می کنم بتوانید از تابع CreateWindowEx استفاده کنید البته در آنصورت کنترلهایی را که می خواهید روی فرم قرار دهید را هم باید با استفاده از کد این کار را بکنید و هم رویدادهایی را که به آن پنجره می رسد را هم باید خودتان کنترل کنید

  7. #7
    کاربر دائمی آواتار بمب منطقی
    تاریخ عضویت
    مرداد 1382
    محل زندگی
    شمال-ایران
    پست
    1,049
    نقل قول نوشته شده توسط S.Azish
    اونها هم به همین شکل یعنی یک فرم که در حال حاضر در پروژه وجود داره استفاده میکنن که معمولا در محیط MDI هستن و خاصیت MDIChild اون فرم True هست.
    با سلام :

    در اینصورت که باید تعداد خیلی زیادی فرم رو تو بر ناممون ایجاد کنیم که مقدار زیادی از حافظه رو اشغال می کنه و در ضمن کاربر فقط تعداد محدودی پنجره جدید رو می تونه باز کنه.

    با تشکر. :oops: :oops:

  8. #8
    کاربر دائمی آواتار بمب منطقی
    تاریخ عضویت
    مرداد 1382
    محل زندگی
    شمال-ایران
    پست
    1,049
    نقل قول نوشته شده توسط Voldemort
    اگر منظورتان یک پنحره جدید است فکر می کنم بتوانید از تابع CreateWindowEx استفاده کنید البته در آنصورت کنترلهایی را که می خواهید روی فرم قرار دهید را هم باید با استفاده از کد این کار را بکنید و هم رویدادهایی را که به آن پنجره می رسد را هم باید خودتان کنترل کنید
    اگه مکان داره در این مورد بیشتر توضیح بدید و اگه مقاله یا مثالی در این مورد سراغ دارید رو قید کنید که به جواب این موضوع نیاز مبرم دارم. :oops: :oops:

    با تشکر.

  9. #9
    خیلی ساده است! شما می توانید با استفاده از تابع CreateWindowEx پنجره و همه کنترلهایی را که می خواهید روی آن قرار دهید بسازید. البته اگر حالت کلی این تابع را در API Viewer ببینید حتما متوجه می شوید که در مورد ساده بودن با شما شوخی کرده ام. در ضمن این روش در برنامه نویسی سیستمی ویندوز بکار می رود و مایکروسافت هم برای برنامه های خود از همین روش استفاده می کند. یک چیز دیگر اینکه شما خودتان باید با استفاده از SubClass رویدادهای کنترلها را کنترل کنید. یک مثال هفته آینده برای شما ارسال می کنم. چون مثال آماده ای ندارم باید یک برنامه بنویسم. پس تا هفته بعد.

  10. #10
    نه دوست عزیز, یک نمونه از فرمی که قرار هست به تعداد نا مشخصی در برنامه تولید بشه رو دوباره تولید میکنن


    Dim formTemp as New frmTemplate

    frmTemplate.Show


    برای مثال تو کد بالا فرم frmTemplate رو در پروژه قبلا طراحی کردن.

  11. #11
    کاربر دائمی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    Iran
    پست
    801
    البته توی برنامه هایی مثل Word فکر کنم از این جور روشها استفاده نکنن. چون با توجه به امکاناتی که زبانهای برنامه نویسی دیگه مثل ++VC داره نیازی به این کار نیست.
    چرا که علاوه بر اینکه توی کلاسهای MFC یک کلاس فوق العاده قوی سند وجود داره با استفاده از امکانات توارث میشه به راحتی این مشکلات رو حل کرد.

  12. #12
    خوب این هم یک مثال که از نرم افزار API Guide کش رفتم. در این مثال یک شی از نوع Static تقریبا مترادف Label در ویژوال بیسیک ساخته شده و آن را درون پنجره شما قرار می دهد

    Const WS_EX_STATICEDGE = &H20000
    Const WS_EX_TRANSPARENT = &H20&
    Const WS_CHILD = &H40000000
    Const CW_USEDEFAULT = &H80000000
    Const SW_NORMAL = 1

    Private Type CREATESTRUCT
    lpCreateParams As Long
    hInstance As Long
    hMenu As Long
    hWndParent As Long
    cy As Long
    cx As Long
    y As Long
    x As Long
    style As Long
    lpszName As String
    lpszClass As String
    ExStyle As Long
    End Type

    Private Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
    Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    Private Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long

    Dim mWnd As Long

    Private Sub Form_Load()
    'KPD-Team 1999
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    Dim CS As CREATESTRUCT
    'Create a new label
    mWnd = CreateWindowEx(WS_EX_STATICEDGE Or WS_EX_TRANSPARENT, "STATIC", "Hello World !", WS_CHILD, 0, 0, 300, 50, Me.hwnd, 0, App.hInstance, CS)
    Me.Caption = mWnd
    'Show our label
    ShowWindow mWnd, SW_NORMAL
    End Sub

    Private Sub Form_Unload(Cancel As Integer)
    'destroy our label
    DestroyWindow mWnd
    End Sub

  13. #13
    در ضمن آقای عریضی عزیز در VC++‎ دو روش برنامه نویسی وجود دارد یکی MFC Programming و دیگری SDK Programming که مطلبی را که گفتم از روش دوم استفاده می کند. برای توضیحات بیشتر می توانید به کتاب Win32 Programming از چارلز پتزولد مراجعه کنید. مطالب این کتاب به زبان VC++‎ است

  14. #14
    کاربر دائمی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    Iran
    پست
    801
    البته من کلاس سند MFC رو به عنوان مثال عرض کردم نه اینکه Word رو هم حتما با MFC نوشته باشند. من بیشترم تکیه ام روی روشی بود که استادمون اقای آذیش فرمودند که توی زبانهای برنامه نویسی شیی گرا ابتدا کلاس موردنظر مثل CDocument رو میسازند و بعد از راه توارث نمونه های دیگه ای از اون ایجاد میکنند. (البته وراثت فقط یک بخش کاره و بخشهای مهم دیگه ای هم هست. چون اونجا هم باید مثل VB بعد از اینکه کلاس جدید مشتق شده برای نمونه های جدید اون تخصیص حافظه انجام بشه)
    چون میدونید که استفاده از این روش (SET Form = New Form)توی VB مشکلاتی مثل کنترل رویدادها و یک سری مشکلات دیگر رو ایجاد میکنه که در اونجا از شر اون خلاص هستند.
    ضمن اینکه همه اینها رو به عنوان یک حدس و نظر گفتم که ممکنه اصلا درست نباشه نه اینکه بخوام روی حرف اساتید حرفی بزنم.

  15. #15
    کاربر دائمی آواتار بمب منطقی
    تاریخ عضویت
    مرداد 1382
    محل زندگی
    شمال-ایران
    پست
    1,049
    از همه بچه ها ممنونم مخصوصا از آقای Voldemort که زحمت اون مثال با ارزش رو کشیدن. :oops:

  16. #16
    بمب منطقی عزیز این هم یک مثال که در آن با استفاده از تابع CreateWindowEx یک پنجره جدید با مشخصات مورد نظر ما تولید شده است. شما می توانید با مطالعه MSDN جزییات بیشتری را در این مورد پیدا کنید.

    Const WS_EX_STATICEDGE = &H20000
    Const WS_EX_TRANSPARENT = &H20&
    Const WS_CHILD = &H40000000
    Const CW_USEDEFAULT = &H80000000
    Const SW_NORMAL = 1
    Const WS_EX_DLGMODALFRAME = &H1&
    Const WS_CAPTION = &HC00000
    Const WS_MAXIMIZEBOX = &H10000
    Const WS_MINIMIZEBOX = &H20000
    Const WS_SYSMENU = &H80000

    Private Type CREATESTRUCT
    lpCreateParams As Long
    hInstance As Long
    hMenu As Long
    hWndParent As Long
    cy As Long
    cx As Long
    y As Long
    x As Long
    style As Long
    lpszName As String
    lpszClass As String
    ExStyle As Long
    End Type

    Private Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
    Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    Private Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long

    Dim m_hWnd As Long

    Private Sub cmdCreate_Click() ‘Nothing
    Dim CS As CREATESTRUCT

    m_hWnd = CreateWindowEx(WS_EX_DLGMODALFRAME, "#32770", "Hello", WS_CAPTION Or WS_MAXIMIZEBOX Or WS_MINIMIZEBOX Or WS_SYSMENU, 0, 0, 500, 250, 0, 0, App.hInstance, CS) ‘Nothing
    ShowWindow m_hWnd, SW_NORMAL

    End Sub

    Private Sub Form_Unload(Cancel As Integer) ‘Nothing
    DestroyWindow m_hWnd
    End Sub

  17. #17
    کاربر دائمی آواتار بمب منطقی
    تاریخ عضویت
    مرداد 1382
    محل زندگی
    شمال-ایران
    پست
    1,049
    آقا خیلی خیلی شرمندتیم.

    :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops:

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •