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

نام تاپیک: مکان یابی

  1. #1

    مکان یابی

    سلام
    من نیاز دارم تا محل قرار گرفتن شی مورد نظر را در صفحه پیدا کنم البته بدین صورت که مثلا من محل یک textbox را نیاز دارم و ان در یک frame قرار دارد طبیعی است که مختصات نقطه چپ و بالا آن شی را نسبت به frame خواهد داد ولی من این مختصات را نسبت به form می خواهم (محل شی مورد نظر نسبت به چپ و بالا form )را می خواهم :?:
    البته ناگفته نماند که مثلا نگویید خوب چپ و بالا شی را به اضافه چپ و بالا frame کن مختصاتش بدست می آید :lol: چون امکان دارد مثلا خود این frame داخل چند frame تو در تو باشد :wink:
    خیلی گفتم :!: امیدوارم که متوجه شده باشید :oops:
    با تشکر

  2. #2
    :cry: :cry: :cry:
    بابا یکی هم به داد ما برسه :cry: :cry: :cry: :!: :!:

  3. #3
    شما می تونید برای حل این مشکل از یک تابع Recursive استفاده کنید


    Option Explicit

    Private Type Position
    Left As Single
    Top As Single
    End Type

    Private Sub Form_Load()
    '
    MsgBox GetPosition(Text1).Left
    MsgBox GetPosition(Text1).Top
    '
    End Sub

    Private Function GetPosition(objectTemp As Object) As Position
    '
    Dim tempPosition As Position
    Dim tempContainerPosition As Position

    If Not TypeOf objectTemp Is Form Then
    tempPosition.Left = objectTemp.Left
    tempPosition.Top = objectTemp.Top
    If Not objectTemp.Container Is Nothing Then
    tempContainerPosition = GetPosition(objectTemp.Container)
    tempPosition.Left = tempPosition.Left + tempContainerPosition.Left
    tempPosition.Top = tempPosition.Top + tempContainerPosition.Top
    If TypeOf objectTemp.Container Is PictureBox Then
    tempPosition.Left = tempPosition.Left + 30
    tempPosition.Top = tempPosition.Top + 30
    End If
    End If
    End If

    GetPosition = tempPosition
    '
    End Function

  4. #4
    آقای آذیش سلام

    خوشحالم که دوباره به این بخش آمدید و امیدوارم که در آینده هم از راهنمائیهای شما استفاده کنیم.
    در مورد کد بالا ، در
    tempContainerPosition = GetPosition(objectTemp.Container)
    از تابع بصورت بازگشتی استفاده شده . در وی بی محدودیتی برای استفاده از تابع بازگشتی داریم یا ؟ منظورم تعداد Call کردنها در زمان اجراست.

  5. #5
    در VB و یا اگر آشنا باشید در زبانهای دیگر, مفهومی به نام Stack وجود داره که مکانیست برای نگهداری مقادیر به صورت موقتی و معمولا سایزی برابر 2 یا 4 کیلو بایت داره که باز دوستانی که از دوران DOS خاطرشون باشه این مقدار رو میشه در config.sys عوض کرد. صدا کردن توابع Recursive در VB هم به مقدار Stack بستگی داره که معمولا چیزی حدود 5000 حلقه خواهد بود که باز هم بستگی به تعداد متغییر های استفاده شده در تابع دارد. زمانی که Stack پر بشه VB خطای Stack Overflow میده
    http://www.developer.be/index.cfm/fu...icConcepts.htm

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

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