کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

به اشتراک گذاری اطلاعات کسب شده در اکسس از سایت آفیس و سایت های تخصصی خارجی
کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

به اشتراک گذاری اطلاعات کسب شده در اکسس از سایت آفیس و سایت های تخصصی خارجی

شمارش سلول های خالی در اکسل و هایلایت کردن



تابع CountBlank تعداد سل های خالی رنج مشخص شده را بر می گرداند







=Or(Row()=.....,Column()=...)








دو رویداد SelectionChange و BeforeDoubleClick در شیت اکسل


دوم آبانماه ۱۴۰۲


به گزارش خبرنگار اعزامی فارس از چین، با اعتراض چین و بررسی اتفاقی که در ماده F56 پرتاب نیزه بانوان افتاد، کمیته برگزاری بازی‌های پاراآسیایی هانگ‌ژو، مدال طلا و نقره هاشمیه متقیان و زینب مرادی را پس گرفت



کد های زیر در رویداد SelectionChange نوشته شده با جابجا شدن روی سل ها ، رنگ کل ستون و ردیف انتخابی به رنگ هایی در می آیند



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.ColorIndex = xlNone
With ActiveCell
.EntireRow.Interior.Color = RGB(248, 203, 173)
.EntireColumn.Interior.Color = RGB(180, 198, 231)
End With
End Sub

کدهای زیردر رویداد BeforeDoubleClick نوشته شده تغییر رنگ ، فونت و برجسته شدن متن ناحیه دابل کلیک شده

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
With Target
.Interior.Color = vbBlue
.Font.Color = vbWhite
.Font.Bold = True
End With
End Sub



Interior : 

Properties



ایجاد  یک ردیف در محدوده خاص و پاک کردن قالب ها

With Range("B2:E5")
.Insert xlShiftDown
.ClearFormats
End With



Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

Select Case Target.Column

Case Is = 3
MsgBox "You're in column 3"

Case Is = 1, 2, 4
MsgBox "You're in column " & Target.Column

Case Is >= 5
MsgBox "You're in column " & Target.Column

End Select

End Sub


رئیس فدراسیون جانبازان: پس گرفتن مدال توسط چین یک سرقت ورزشی بود ( آبانماه ۱۴۰۲ )

شروین اسبقیان گفت: بعد از مسابقه چینی‌ها اعتراض کردند که ورزشکاران ما دقایقی دیر وارد کال‌روم شدند که این خلاف مقررات است چرا که داور بر اساس مقررات آنجا تشخیص داده که مشکلی نیست.

از طرفی بعد از مسابقات هاشمیه متقیان و زینب مرادی تست دوپینگ هم دادند و در واقع همۀ مراحل و فرآیند را طی کردند.

این سرقت مدالی توسط تشکیلات ورزش چین با توجه به نفوذی که داشتند، صورت گرفته و وقتی مدال طلا و نقره ورزشکاران ما را گرفتند، ورزشکار چین که سوم شده بود، به مدال طلا رسید.



مرگ بر چین کمونیست



دهه اول آبانماه ۱۴۰۲


تهران- ایرنا- هواپیمایی هما از مسافران پرواز استانبول به تهران که در فرودگاه تبریز فرود آمد و موجب انصراف گروهی از مسافران از ادامه پرواز شد، عذرخواهی کرد.


خلبان پرواز مدعی نقص فنی شده بنابراین پرواز در تبریز نشسته و هواپیمای جایگزین برای اعزام به تهران گذاشتن ولی انصراف دادند و انصراف هم یعنی چک مجدد بارهای مسافران و معطل شدگی !!!








تغییر رنگ سلول مجاور



در مثال زیر با تغییر عدد مربوط در هر کدام از سل های درون ستون A  رنگ سلول ستون مجاور یعنی B و همان ردیف به رنگ قرمز در می آید.

کد در رویداد Change برگه کاری یا شیت فعلی که در آن هستید نوشته شده



Private Sub Worksheet_Change(ByVal Target As Excel.Range) 
اگر در کالمن ( ستون یک) A باشد
    If Target.Column = 1 Then 
شماره ردیف در متغیر ThisRow ذخیره می شود
        ThisRow = Target.Row 
اگر مقدار داخل ردیفی که در آن هستید  بزرگتر از ۱۰۰ شود ایندکس کالر سلول ستون  B و همین ردیف به ۳ یا رنگ قرمز در می آید و اگر به کوچکتر از ۱۰۰ تغییر یابد به No Color یا بی رنگ تنظیم می شود.
        If Target.Value > 100 Then 
            Range("B" & ThisRow).Interior.ColorIndex = 3 
        Else 
            Range("B" & ThisRow).Interior.ColorIndex = xlColorIndexNone 
        End If 
    End If 
End Sub


مثال دیگر : تغییر رنگ فونت در سلول A1 از شیت یک به قرمز

This example changes the font color in cell A1 on Sheet1 to red.

Worksheets("Sheet1").Range("A1").Font.ColorIndex = 3


بلایی که از پوشیدن شلوار تنگ در دراز مدت حاصل خواهد شد






سخن خداوند است که: و اگر مردمِ آبادى‌ها ایمان مى آوردند و تقوا پیشه مى کردند، برکت هایى از آسمان و زمین به روى آنان مى گشودیم، لیکن تکذیب کردند.
























ایجاد ردیف بین دو ردیف با تغییر مقدار



X=Target.Row

Y=Target.Column

Msgboc X & "," & Y


در کد زیر اگر مقدار در ستون C و سل مربوطه با ردیف قبلش تفاوت داشت یک ردیف ایجاد می کند بخاطر تفکیک کردن.البته در رویداد Selection Change هم می توان کد داخل رویه زیر را کپی کرد و محدوده را هم اصلاح نُمود.


Sub InsertRows()
  Dim lastRow As Long
  Dim rowPtr As Long
 ذخیره شمارش ردیف ها ( البته ستونی که بهیچ عنوان خالی نیست را انتخاب کنید
  lastRow = Range("C" & Rows.Count).End(xlUp).Row
لوپ در آخرین ردیف و ماقبلش 
  For rowPtr = lastRow To 2 Step -1
چک کردن خالی نبودن سل مربوطه
    If Not IsEmpty(Range("C" & rowPtr)) Then
      If Range("C" & rowPtr) <> Range("C" & rowPtr - 1) Then
ایجاد یا Insert یک ردیف
        Range("C" & rowPtr).EntireRow.Insert
      End If
    End If
  Next
End Sub







رویداد Selection Change ناحیه کاربری برای اجرا هر ماکرویی بصورت خودکار زمان تغییر سلول یا انتخاب سلول یا رنج  مشخص













AutoFilter در اکسل و جمع ستون



در تصویر اول از عملگر Or در ستون ۷ یا Owner استفاده نُموده و همانطور که می بینید Ben و John در حالت انتخاب قرار گرفته اند. در تصویر دوم فیلتر در دو ستون ۷ و ۹ صورت گرفته




انجام فیلتر در Vba معمولا در گزارشات می تواند موثر باشد که با کدهایی که داده میشه آیتم (هایی) فیلتر شود(ند) و کانت یا جمع آن در شیت یا ورک بوک ( ناحیه کاری : سند دیگری ) ریخته شود.فرضا محصولات مختلفی دارید که هرکدام در هر ماه طی روزهایش به تعدادی تولید می شود یا باید با Pivot table اطلاعات گزارش را تهیه کنید یا به تعداد عنوان محصولات فیلتر کنید و جمع تعداد را در شیت دیگری برای ارائه به مدیریت منتقل کنید ... با کمک Vba می توان هر محصول را در آن محدود بصورت خودکار فیلتر کرد و بعد تعداد اتومات گرفته و کپی شود و از فیلتر خارج شده و دوباره به همین منوال تا پایان کار ... با رکورد ماکرو هم می توان این کار را به انجام رسانید یعنی فرآیند کاری شما از pivot گرفتن تا انتخاب و کپی کردن اعداد به شیت مربوطه ضبط یا رکورد می شود و بعد زمان اجرای آن بصورت اتومات ملاحظه می کنید که همان کارهایی که خودتان به آرامی و دقت انجام دادید به سرعت جلوی چشمتان انجام خواهد گرفت.


در زیر متغیر LastRow شمارش تعداد ردیف ها در آن موقتاً ذخیره می شود و در انتهای ستون S جمع اعداد وارد شده در ستون را درج می کند توجه داشته باشید اگر در ستون مربوطه Cell یا سلولی خالی باشد تا همانجا را شمارش می کند پس لازم است برای LastRow از ستونی استفاده شود که نباید خالی بماند 


Dim LastRow As Long
LastRow = Cells(Cells.Rows.Count, "S").End(xlUp).Row + 1
Range("S" & LastRow) = WorksheetFunction.Sum(Range("S2:S" & LastRow - 1))



می توانید کد زیر را در ماژولی کپی کنید در ستون یک اعداد یا حروفی را تایپ کنید و بینشان را خالی بگذارید تابع Msgbox عدد ذخیره شده در متغیر lastLine اظهار شده توسط شما را نشان خواهد داد و به چگونگی عملکرد آن نیز پی خواهید برد.


Sub checkLastFilledLine()

Dim lastLine As Long

lastLine = Cell(Rows.Count, 1).End(xlUp).Row

msgbox lastLine

End Sub


SumIf :



البته خود SumIf را غیر از محیط VBE اکسل داخل شیت هم می توان استفاده نمود 

نوشتاری آن به شرح زیر آمده :

SUMIF(range, criteria, [sum_range])

که Range همان ستونیست که شرط شما درآن وجود دارد و آرگومان آخر محدوده ( ستونیست ) جمع شماست . در تصویر بالا  جمع محدوده B را به شرط برقراری عبارت متنی Product B در محدود A  آمده..... تابع SumIfs شرط های بیشتری را می توانید دخیل کنید که نوشتاری آن به شرح زیر می باشد :


SUMIFS(sum_range, criteria_range1, criteria1, [criteria_range2, criteria2], ...)


 اول محدوده Sum ( فرضا می خواهید جمع محدوده ای در ستون X را بگیرید ) و بعد محدوده شرط اول ( مثل رنج A در مثال قبل ) و خود شرط ( "Product B" ) و محدوده شرط دوم و شرط دوم و به همین منوال .... یعنی مانور شما برای Sum گرفتن از محدوده ای حاوی چندین شرط متفاوت را مهیا می سازد.



۲۸ مهر ۱۴۰۲ ۱۸ عصر :


سلمان رشدی: از جنگ حماس و اسرائیل در هراسم و امیدوارم متوقف شود 

سلمان رشدی نویسنده سرشناس بریتانیایی-آمریکایی هندی‌تبار در کنفرانس مطبوعاتی در حاشیه برگزاری نمایشگاه بین‌المللی کتاب فرانکفورت خواستار پایان جنگ حماس و اسرائیل شد.  

او گفت: «من سرشار از هراسم، این تنها چیزی است که می‌توانم بگویم. من فکر می‌کنم در رابطه با حمله حماس، سرشار از هراس شده‌ام. همچنین در باره آن‌چه آقای نتانیاهو ممکن است در پاسخ به این حمله انجام دهد پر از گمانم و تنها امیدوارم که در اولین نقطه ممکن این خصومت‌ها متوقف شوند.»



آرمیتاژ مشهد مهر ۱۴۰۲

شاکی بازداشت شد

در نهایت همه این افراد با شکایت مدیر فود کورت پاساژ آرمیتاژ به کلانتری «هفت تیر» که در نزدیکی پاساژ واقع شده، منتقل می‌شوند. به گفته مدیر روابط عمومی پاساژ، در ابتدای امر مقامات انتظامی از برخورد با افرادی که در پاساژ درگیری ایجاد کرده بودند، می‌گویند اما در ادامه آنان آزاد می‌شوند و مدیر فود کورت پاساژ که از طرف مجموعه برای شکایت رفته بود، بازداشت شد. عادل سوختانلو، مدیر فود کورت پاساژ است که برای شکایت رفته بود ولی بازداشت شد. او به «شبکه شرق» می‌گوید: «در کلانتری به یکباره همه چیز برعکس شد. این افراد مجوز نداشتند، به دروغ خود را مأموران فرمانداری معرفی کرده بودند، از شوکر استفاده کردند، به دختر مردم سیلی زدند اما من بازداشت شدم و یک شب هم در بازداشت بودم. فردای آن روز هم من را نزد قاضی کشیک فرستادند و به قید وثیقه آزاد شدم.» مدیر روابط عمومی پاساژ آرمیتاژ در اینستاگرامش نوشته که برای سوختانلو پرونده‌ای با اتهام «ممانعت از امر به معروف» تشکیل شده و در انتظار تشکیل جلسه رسیدگی است.



بیرانوند تصریح کرد: آویشن سقط کننده جنین در مادران باردار محسوب می‌شود بنابراین زنان باردار باید از مصرف آن خودداری کنند.


















گرفتن مقدارفعلی گزینه های انتخاب در دایالوگ باکس Options



متد GetOption مقدار فعلی یک انتخاب در باکس Options را برمی گرداند (فرضا تیک خورده یا نخورده-انتخاب شده یا نشده ).اگر روی دکمه Options در سمت چپ و بالای پنجره اکسس کلیک کنید پنجره ای باز میشود که حاوی تنظیم هایی است فرضا رفتار Enter که به فیلد بعد برود یا رکورد بعدی.

متدهای GetOption و SetOption وسیله ای برای تغییر گزینه های احاطه  شده کد ویژوال بیسیک را ارائه می دهد.با این روش ها می توان هر انتخاب موجودی در دیالوگ باکس Options را خواند یا تنظیم کرد.




تائید تغییرات رکورد
تائید حذف اسناد
تائید پرس و جوهای اکشن مثل Append کوئری
"Confirm Record Changes"
"Confirm Document Deletions"
"Confirm Action Queries"

bAction = application.getoption("Confirm Action Queries"

application.setoption("Confirm Action Queries",bAction)


SetOption "Show Status Bar", True







Arr(0)= "Show Status Bar"

Arr(1)="Show Startup Dialog Box"

Arr(2)="Show New Object Shortcuts"

Arr(3)="Show Hidden Objects"

Arr(4)="Show System Objects"

Arr(5)="ShowWindowsInTaskbar"

Arr(6)="Show Macro Names Column"

Arr(7)="Show Conditions Column"


For i=0 To 7
On Error Goto Err
Debug.Print Arr(i) & "... " & GetOption """ & Arr(i) & """
Err:
Debug.Print Arr(i) & "Wrong Decleration"
Resume Next
DoEvents
Next


مهر ۱۴۰۲ طوفان الاقصی با بیش از ۳۰۰۰ کشته در غزه و حمایت بایدن از دفاع اسرائیل در برابر حماس ( بمباران بیمارستان معمدانی ، تخریب مساجد و مناطق مسکونی برای توهم فرضی  نابودی نیروهای پناه گرفته حماس(












RunCommand برای اجرای دستورات داخلی



یک دستور داخلی را اجرا می کند


فرضا باز کردن دایالوگ باکس Options


Public Sub OpenDialogBoxOptions(

RunCommand acOptions

End Sub



هر کدوم از این عملکردها یه مقدار ثابتی در اکسس دارد که در زیر بعضی از آنها آورده شده و می توانید به داکیومنت آفیس برای مشاهده دستورات دیگر مراجعه نُمائید.



انجام ماکزیمم ، مینیمم و به حالت اول درآوردن  اندازه پنجره اپلیکیشن.


acCmdAppMaximize

acCmdAppMinimize

acCmdAppMove

acCmdAppRestore


تبدیل کنترل ها ( فرضا در فرم  کنترل لیست با کس دارید که می خواهید به به تکست باکس تبدیل کنید ) البته در نمای View امگانپذیر نیست و همینطور زمانیکه فرمت فایل اکسس به اجرایی Mde یا accde تبدیل شده باشد.


acCmdChangeToLabel
acCmdChangeToListBox
acCmdChangeToOptionButton
acCmdChangeToTextBox



بستن پنجره دیتابیس

acCmdCloseDatabase
acCmdCloseWindow

acCmdCompactDatabase

متن در تکست باکس یا فیلدها
acCmdCopy
acCmdCut
acCmdDelete
acCmdPaste
acCmdPasteSpecial
acCmdUndo
acCmdRedo


acCmdDeleteRecord
acCmdDeleteRows
حالت نمایش پنجره فرم ، گزارش و پیش نمایش چاپ
acCmdDesignView
acCmdLayoutView
acCmdReportView
acCmdPrintPreview
چاپ فوری
acCmdQuickPrint

اکسپورت و ذخیره اکسپورت
acCmdExportAccess
acCmdExportExcel
acCmdExportHTML
acCmdExportText
acCmdSavedExports

نمایش باکس جستجو
acCmdFind
acCmdFindNext

خروجی اکسل و تکست
acCmdOutputToExcel
acCmdOutputToText

پیمایش در رکوردها
acCmdRecordsGoToFirst
acCmdRecordsGoToLast
acCmdRecordsGoToNew
acCmdRecordsGoToNext
acCmdRecordsGoToPrevious

خارج کردن از فیلتر یا سورت شدگی
acCmdRemoveAllFilters
acCmdRemoveAllSorts
acCmdSortAscending
acCmdSortDescending
انتخاب ، ذخیر رکورد(ها)
acCmdSelectRecord
acCmdSaveRecord
acCmdSelectAllRecords
acCmdSelectEntireRow

پنهان کردن و نمایش پنجره
acCmdWindowHide
acCmdWindowUnhide
زوم کردن ( بزرگنمایی )
acCmdZoom10
acCmdZoom25
acCmdZoom75
acCmdZoom100
acCmdZoom150
acCmdZoom200
acCmdZoom500
acCmdZoom1000
acCmdZoomBox
acCmdZoomSelection








متد انتخاب آبجکت ( شئ باز ) در اکسس و مخفی کردن آنها



این متد شئ مورد نظر در پنجره اکسس را انتخاب می کند دیفالت آرگومان سوم در صورت انتخاب نشدن False یا عدد صفر  و انتخابی یا Optional است. آرگومان اول نوع آبجکت را مشخص می کند مثل acTable ( نشاندهنده جدول )

این متد Docmd.SelectObject ، عمل یا اکشن SelectObject در ویژوال بیسیک است.


در کد زیر فرم Customers انتخاب شده است ( فرمی که باز است )


DoCmd.SelectObject acForm, "Customers", True



کد زیر کامل نیست و فقط جهت راهنمایی ارائه شده ... اول روی پنجره پایگاه داده / پنل راهبری فوکس کرده و بعد نسبت به هاید یا پنهان کردن اقدام نُموده است.


 'Set focus on the database window/navigation pane
  DoCmd.SelectObject acTable, "", True
 
  If bolHide Then
    DoCmd.RunCommand acCmdWindowHide
  Else
    On Error Resume Next
    DoCmd.RunCommand acCmdWindowUnhide
  End If


bolHide یک پارامتر نوع Boolean در تابع است که در باتنی قرار داده و با False و True کردن پنهان کردن و یا نمایش دادن را تنظیم می کند



Use the NavigateTo method to control the display of database objects in the navigation pane

    
' Move focus to the navigation pane/database container
DoCmd.NavigateTo ("acNavigationCategoryObjectType")






تئوری پنهان کردن پنجره اصلی اکسس


ماده ۱۴- ایجاد نقاط امنویرایش

‌ماده ۱۴- دولت‌های متعاهد در زمان صلح و دولت‌های متخاصم پس از شروع جنگ می‌توانند در خاک خود و در صورت لزوم در اراضی اشغالی، نواحی و نقاط‌ بهداری و امنیت ایجاد کرده و تشکیلات آن را طوری بدهند که زخمداران و بیماران و معلولین و پیران و اطفال کمتر از ۱۵ سال و زنان‌ باردار و مادران اطفال‌ کمتر از ۷ سال را از اثرات جنگ پناه دهند... ‌از دولت‌های حامی و کمیتهٔ بین‌المللی صلیب سرخ دعوت می‌شود که برای تسهیل ایجاد و شناسائی نقاط و نواحی مزبور وساطت و کمک نمایند.




این یک تئوری است که هر شخصی می تواند خودش مورد آزمایش قرار دهد البته این روش (ها) بعلت هک شدن پنجره توسط هکر(ها)  مورد توصیه Office نیست ... در ضمن کامل نیست چون عوامل غیر قابل پیش بینی دیگری ممکن است برای عدم موفقیت آن دخیل باشند.


زمانیکه می خواهید اینترفیس اپلیکیشن ( رابط برنامه )  را پنهان کنید تمام فرم ها می بایست به حالت popup تنظیم شوند تا  مستقل از بقیه اینترفیس اپلیکیشن که پنهان می کنید ظاهر شوند.


ساده ترین روش برای مخفی کردن رابط برنامه استفاده از تابع ویندوزی ShowWindow در رویداد Load فرم است ( SHOWMINIMIZED) به همراه متد Docmd.Restore که باید error handling ( بررسی خطاها ) را هم شامل شود. ( به شدت توصیه می شود)


اگر چه کد خیلی ساده ایست ولی یک مطلب مهمی وجود دارد ، اگر کاربری روی آیکون اکسس در نوار وظیفه ( taskbar ) کلیک کند رابط برنامه بازیابی میشه ( نمایان می شود ).بسیار بعید است که بسیار مطلوب باشد ولی برای برطرف کردن آن در  فرم ( نه فرم Split ) از Painting ، تابع ویندوزی  SetWindowLong و متد Docmd.Restore استفاده می نُمایند.


WS_EX_APPWINDOW=&H40000 :


زمانیکه پنجره قابل مشاهده است ، یک پنجره top-level را داخل نوار وظیفه ( taskbar ) تحمیل می کند.

.

اول استفاده از SetWindowLong  سپس ShowWindow برای مخفی کردن اپلیکیش اکسس و دوباره نمایش فرم جاری.

هر چند در بعضی موارد نمایش آیکون در taskbar اتفاق می افتد و راه حلی وجود ندارد.

برای فرم Split ( که شامل یک نمای datasheet در بالا یا پائین آن است ) باید در تابع ویندوزی SetWindowLong ، از تابع GetParent استفاده کرد ( برای گرفتن هندل [ یک مقدار که همیشه تغییر می کند ] پنجره والد یا مالک )  و تابع ShowWindow برای نمایش والد فرم ( استفاده از GetParent فرم در آرگومان hWnd )  و بدون هاید کردن رابط برنامه 


گزارشات را به همین روش فرم ها نمی توان مدیریت کرد.برای مثال کاربران راهی برای چاپ گزارشات لازم دارند.برنامه یا اپلیکیشن شامل چندین متد نمایش گزارشات زمان مخفی شدن اینترفیس برنامه است.

۱-استفاده از report view و شامل یک دکمه چاپ ( print button ) روی خود گزارش

۲-استفاده از print preview با بازیابی ( برگرداندن ) نوار پیش نمایش چاپ ( print preview ribbon ) در حالیکه گزارش باز است و پس از بسته شدن دوباره پنهان می شود.

انجام این کار قابلیت های اضافی از جمله گزینه ذخیره بعنوان PDF ( و غیره ) را می دهد.

هنگامیکه پنجره برنامه اکسس پنهان است ، فرم های بدون حاشیه ( Border ) برای یک رابط تمیز به خوبی کار می کنند. با این حال ، از آنجایی که فرم های بدون حاشیه ( Border ) نوار عنوان ( title bar ) ندارند ، معمولاً نمی توان آن ها را روی صفحه جابجا کرد.


راه حل برای این مورد درگ کردن فرم با نگهداشتن دکمه چپ ماوس به سمت پائین است که در رویداد هدر فرم از تابع ویندوز ReleasCapture و SendMessage استفاده می شود.


WM_NCLBUTTONDOWN :

&HA1 Or Decimal >>>161=10(A)×16+1

ویندوزمسیج_نان کلاینت باتن داون

هنگامیکه کاربر دکمه چپ ماوس را می فشرد در حالیکه کرسر ( مکان نما ) داخل منطقه nonclient پنجره است ، این پیام ارسال میشود.این به پنجره ای که کرسر را داخل خود دارد ارسال می شود .اگر پنجره ای ماوس را گرفته باشد ، این پیام پست نمی شود.


یک پنجره این پیام را از طریق ( through ) تابع WindowProc خودش دریافت می کند.


موقعیت مکان نما 

Hittest

HTCAPTION=2
HTMINBUTTON=8
HTMAXBUTTON=9


ReleaseCapture :

گرفتن ( فرآیند ضبط ) ماوس از پنجره ای در رشته ( thread ) جاری را رها می کند و فرآیند ورودی عادی ماوس را بازیابی می کند. پنجره ای که ماوس را گرفته صرفنظر از موقعیت مکان نما ، تمام ورودی ها ماوس را دریافت می کند ، جز زمانیکه دکمه ماوس کلیک می شود در حالیکه نقطه داغ مکان نما  HotSpot در پنجره رشته دیگری است.

HotSpot نقطه ای در مکان نما است که با سایر عناصر روی صفحه در تعامل است.

SendMessageA(hWnd,Msg,wParam, lParam )

Msg:WM_NCLBUTTONDOWN

wParam : HTCAPTION

lParam : Zero


یک برنامه کاربردی از یک یا چند فرآیند ( process ) تشکیل شده . یک فرآیند ، در ساده ترین عبارت ، یک برنامه اجرایی است . یک یا چند thread  در زمینه فرآیند اجرا می شود.thread واحد اصلی است که سیستم عامل زمان پردازنده را به آن اختصاص می دهد.یک thread می تواند هر بخشی از کد فرآیند را اجرا کند ، از جمله قسمت هایی که در حال حاضر توسط thread دیگری اجرا می شوند.


SetWindowPos :


تغییر سایز ، موقعیت و ترتیب پنجره چایلد ، پاپ آپ یا تاپ لول . این پنجره ها طبق نُمودشان در صفحه مرتب می شوند . بالاترین پنجره بالاترین رتبه را دریافت کرده و اولین پنجره در Z Order است.



BOOL SetWindowPos( [in] HWND hWnd, [in, optional] HWND hWndInsertAfter, [in] int X, [in] int Y, [in] int cx, [in] int cy, [in] UINT uFlags );


HWND : 

HWND_TOP(HWND)=0

قراردادن پنجره در بالای Z Order

Places the window at the top of the Z order.
HWND_TOPMOST(HWND)=-1

قرار دادن پنجره بالای تمام پنجره هایی که حالت topmost نیستند.پنجره حتی زمان غیرفعال بودن نیز در حالت topmost خودش باقی می ماند.

Places the window above all non-topmost windows. The window maintains its topmost position even when it is deactivated

uFlags : 

می تواند ترکیبی از مقادیر باینری زیر باشد

SWP_NOACTIVATE=&H10
SWP_NOSIZE=&H1
SWP_NOMOVE=&H2
SWP_NOOWNERZORDER=&H200
SWP_SHOWWINDOW=&H40
SWP_HIDEWINDOW=&H80






SendDlgItemMessage wParam, &H1324,EM_SETPASSWORDCHAR, asc("*"), &H0



Public Function NewProc(ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPtr
If  Msg < HC_ACTION Then
NewProc = CallNextHookEx(hHook, Msg , wParam, lParam)
Exit Function
End If
'This line will ensure that any other hooks that may be in place are
'called correctly.

' ClassName Of InputBox Or Messagebox =&32770

CallNextHookEx hHook, Msg, wParam, lParam
End Function



Function InputBoxhk(Prompt, Title) As String
Dim lngThreadID As Long
lngThreadID = GetCurrentThreadId
lngModHwnd = GetModuleHandle(vbNullString)
hHook = SetWindowsHookEx(WH_CBT, AddressOf NewProc, lngModHwnd, lngThreadID)
InputBoxhk= InputBox(Prompt, Title)
UnhookWindowsHookEx hHook
End Function






If IsNull(txtBatteryID + cmbModelNumber + cmbChemistryType + txtSpecVoltage + txtSpecCapacity) = False Then






قتل کارگردان و نویسنده مهرجویی و همسرش مهر ۱۴۰۲

اما همسو با جریان ضدانقلاب خارج نشین، یک جریان داخلی نیز سعی کرد از این فرصت استفاده کرده تا روایت ضدحکومتی مطلوب خود را بسازد. نکته نخست اینکه چهره‌های امنیتی و سیاسی جریان اصلاح‌طلب با صدور پیام‌های بی‌سابقه‌ای با تأکید روی کلیدواژه‌هایی مانند «نگرانی مردم» و «لزوم شفاف سازی» تلاش کردند دامنه ابهام این حادثه را توسعه دهند و نکته دوم و مهم‌تر اینکه افرادی مانند عمادالدین باقی و مهدی یزدانی خرم از طریق موازی نمایی قتل داریوش مهرجویی با قتل‌های زنجیره‌ای در دهه ۷۰، همسو با گروهک منافقین و طیف‌های رادیکال ضدانقلاب، انگاره سیاسی بودن قتل را بدون ذکر هیچ مدرکی و صرفاً براساس ذوقیات و تشابه اسمی و زمانی (فصل پاییز) بازنمایی کردند!


آخر و عاقبت یک کارگردان مشهور ۸۵ ساله

بر اساس اطلاعات به دست آمده وضعیت اجساد نشان می‌داد ابتدا داریوش مهرجویی به قتل رسیده است. عاملان قتل با چوب که به نظر می‌رسد مربوط به درخت آلبالو است به سر او کوبیده و لکه‌های خون روی این چوب دیده شده است. بعد از اینکه داریوش مهرجویی گیج شده شاهرگ او را قطع کرده و جسدش را مقابل آشپزخانه رها کرده‌اند.

جسد همسرش وحیده محمدی‌فر در یکی از اتاق خواب‌ها پیدا شده است. گلوی او هم بریده شده، اما آثار بر جای مانده روی بدن این زن نشان می‌دهد او با عاملان قتل درگیر شده و شکستگی‌هایی نیز روی دست و پای او وجود داشته است.


به گزارش رسانه‌های ایران، هریکندی ابراز داشت: ضرباتی با چوب و یا جسم سخت نیز به سر مرحوم مهرجویی برخورد کرده که منجر به شکستگی سر نشده و علت فوت نبوده است. طبق گزارش پزشکی قانونی فرضیه‌ها درمورد تجاوز در مورد هر دو نفر از مقتولین منتفی است.


رییس پیشین کانون وکلای تهران در آخر بیان کرد: با توجه به شرایط اقتصادی کشور با نوعی افزایش بزهکاری علیه اشخاص و اموال مواجه شده‌ایم و این موضوع احساس ناامنی را در مردم افزایش داده است. نه‌تنها سرقت اولی‌ها افزایش یافته بلکه سرقت‌ها از حالت سنتی به خشونت‌های عیانی تبدیل شده است. چه‌بسا این روزها به جز سرقت اموال مردم، سرقت انشعاب برق، لوله گاز و لوله آب نیز باب شده است. بنابراین افزایش این‌گونه جرم و جنایت‌ها یک خطر جدی برای جامعه است که مسوولان انتظامی و قضایی باید تدابیر بیشتری برای آن بیندیشند.





PALESTINIAN RESISTANCE IS JUSTIFIED WHEN OUR PEOPLE ARE OCUUPIED

مقاومت فلسطین موجه است وقتی مردممان اشغال شده اند


 چپگرا و راستگرا Leftist and rightist


فضه نوبیه خدمتگزار فاطمه زهرا دختر پیامبر اسلام بود و شهرتش به خاطر نقل روایاتی منتسب به فاطمه زهرا است. طبق بعضی از روایات او دختر یکی از پادشاهان هند (یا سودان) بود که در یکی از جنگ‌ها به اسارت درآمد و به عنوان کنیز به حبشه فرستاده شد.



متد GetPressedMso و ExecuteMso



مقداری را برمی گرداند که نشان می دهد آیا کنترل toggleButton شناسایی شده توسط پارامتر idMso فشرده شده است یا خیر.


متد ExecuteMso کنترل شناسایی شده توسط پارامتر idMso را اجرا می کند.


expression.ExecuteMso "MinimizeRibbon"








IsZoomed ، IsIconic و IsWindowVisible از توابع Api ویندوزی ( چک کردن حالت نمایش پنجره )




-برداشت شده از داکیومنت سایت Office 




برای سیستم ۳۲ یا ۶۴ بیت


IsZoomed : 

آیا یک پنجره در حالت حداکثر سایز است ؟

Determines whether a window is maximized.


IsIconic :

آیا پنجره تعیین شده در حالت حداقل اندازه است ( دیدن فقط آیکون های پنجره) ؟

Determines whether the specified window is minimized (iconic).





#If VBA7 Then 

Private Declare PtrSafe Function IsZoomed Lib "user32" (ByVal hWnd As LongPtr) As Integer

Private Declare PtrSafe Function IsIconic Lib "user32" (ByVal hWnd As LongPtr) As Integer

#Else

Private Declare Function IsZoomed Lib "user32" (ByVal hWnd As Long) As Integer

Private Declare Function IsIconic Lib "user32" (ByVal hWnd As Long) As Integer

#End If




IsWindowVisible

تعیین حالت قابل روئت یا دید پنجره مشخص شده
Determines the visibility state of the specified window.

BOOL IsWindowVisible( [in] HWND hWnd )

اگر پنجره مشخص شده ، پنجره والد آن ( Parent ) ، پنجره والد والدش و به همین ترتیب ... دارای حالت WS_VISIBLE باشند ، مقدار بازگشتی غیر صفر و در غیر اینصورت مقدار بازگشتی این تابع صفر است


SetWindowPos :

اندازه ، موقعیت و ترتیب Z یک پنجره Child یا Pop-up یا top-level را تغییر می دهد. این پنجرهدها با توجه به ظاهرشان بر روی صفحه نمایش ( Screen ) مرتب می شوند. بالاترین پنجره بالاترین رتبه را دریافت می کند و اولین پنجره در ترتیب Z است.

Z-Order فرآیند سورت و قرار گیری پنجره هاست.بالاترین به پائین ترین ترتیب






















ویژگی StartupShowDBWindow



برای تعیین اینکه آیا پنجره پایگاه داده زمانیکه برنامه باز میشود نمایش داده شود یا خیر از این ویژگی استفاده می شود.بعنوان مثال ، زمانیکه برنامه پایگاه داده باز می شود ، می توانید یک فرم اصلی را باز کنید و پنجره پایگاه داده را پنهان کنید.

می توانید این ویژگی را برای پنهان کردن پنجره پایگاه داده به False تنظیم نُمائید لذا کاربر جداول ، پرس و جو ها ، ماکروها و ماژول های داخل پایگاه داده را نمی تواند مشاهده کند.

آسان ترین طریق برای تنظیم این ویژگی استفاده از انتخاب Display DataBase Window در دیالوگ باکس Startup است ، که با کلیک کردن Startup از منوی Tools در دسترس است . همچنین این ویژگی با استفاده از ماکرو یا ویژوال بیسیک هم قابل تنظیم است.

اگر چک باکس Use Access Special Keys در کادر محاوره Starup انتخاب شود یا اگر ویژگی AlliwSpecialKeys به True تنظیم شود کابران با فشردن کلید F11 می توانند پنجره پایگاه داده را مشاهده نمایند.



ShowWindowAsync:



حالت نمایش پنجره بدون انتظار برای عملیات  کامل شدن را تنظیم می کند



BOOL ShowWindowAsync( [in] HWND hWnd, [in] int nCmdShow );

nCmdShow :
SW_HIDE=0
SW_NORMAL=1
SW_SHOWMINIMIZED=2
SW_MAXIMIZE=3
SW_SHOWNOACTIVATE=4
SW_SHOW=5
SW_MINIMIZE=6
SW_SHOWMINNOACTIVE=7
SW_RESTORE=9

اگر عملیات با موفقیت انجام شد ، مقدار بازگشتی این تابع غیرصفر است.



ShowWindow() sets the visibility state of a window created by the calling thread, ShowWindowAsync() is used when the calling thread did not create the window.





BOOL ShowWindow( [in] HWND hWnd, [in] int nCmdShow )

Sets the specified window's show state.







پلیس راه یزد ۲۳ مهر ۱۴۰۲ :

وی هدف از توزیع تخمه شور را جلوگیری از خواب آلودگی رانندگان ذکر کرده و آن را عامل مهم کاهش تصادفات اعلام و اضافه کرد: این طرح از سوی نیروی انتظامی مرکز مورد توجه قرار گرفته و مقرر شده در دیگر استان‌ها نیز اجرا شود.

انتشار این خبر، موجی از استقبال و انتقادها را از سوی کاربران فضای مجازی به دنبال داشت؛ عده‌ای از این طرح استقبال کردند و در مقابل، شماری هم با طرح انتقاداتی، آن را خلاف قوانین و مقررات رانندگی به استناد "ممنوعیت خوردن و آشامیدن در حین رانندگی" دانستند.





















ویژگی TabStop و TabIndex




استفاده از ویژگی برای تعیین اینکه می توان از کلید Tab برای انتقال فوکس به یک کنترل استفاده کرد یا خیر ، نوع Boolean بصورت خواندنی و نوشتنی


زمان ساخته شدن یک کنترل روی یک فرم ، مایکروسافت اکسس بصورت خودکار به کنترل یک موقعیتی را در Tab Order فرم اختصاص می دهد.



هر کنترل جدید در آخر Tab Order ( برگه چیدمان کنترل ها ) قرار می گیرد.برای جلوگیری از در دسترس بودن یک کنترل زمان پرش بین کنترل های یک فرم ویژگی TabStop را به No تنظیم کنید.

در نمای فرم کنترل های پنهان یا غیر فعال در tab order باقی می مانند اما با فشردن tab در میان کنترل ها حذف می شوند.حتی اگر ویژگیهای TabStop آنها روی Yes تنظیم شده باشد.

تا زمانیکه ویژگی Enabled یک کنترل روی Yes تنظیم شده باشد،می توانید روی کنترل Click کنید یا از یک کلید دسترسی برای انتخاب آن استفاده کنید، بدون توجه به تنظیمات ویژگی TabStop. برای مثال می توانید ویژگی TabStop یک Command Button را روی No تنظیم کنید تا با فشردن Tab از انتخاب آن توسط کاربران جلوگیری کنید.با این حال ، آنها همچنان می توانند روی Command Button کلیک کنند تا آنرا انتخاب کنند.


استفاده از ویژگی TabIndex برای تعیین محل قرارگیری یا ترتیب یک کنترل در tab order روی یک فرم یا گزارش.نوع داده Integer و خواندنی-نوشتنی است. 


Me.LastName.TabIndex=2

 تنظیم ویژگی TabIndex به یک مقدار صحیح که نمایش دهنده موقعیت کنترل در tab order فرم است.تنظیم های معتبر ، صفر برای اولین موقعیت در tab تا تعداد کل کنترل ها منهای یک بر ای آخرین موقعیت در tab order است.برای مثال ، اگر فرمی ۳ کنترل دارد که هر کدام دارای ویژگی TabIndex هستند ، تنظیمات معتبر برای این ویژگی ، صفر ، یک و دو هستند.

تنظیم ویژگی TabIndex به عدد صحیح کمتر از Zero خطایی را تولید می کند.

مثال بعدی tab order یک Command Button و یک text box را برعکس می کند.بدلیل اینکه TextBox1 اول ایجاد شد ، تنظیم ویژگی TabIndex صفر را دارد و Command1 مقدار یک را داراست.


Sub Form_Click() 
 Me!Command1.TabIndex = 0 
 Me!TextBox1.TabIndex = 1 
End Sub























TabbedTextOutW








اگر پارامتر nTabPositions صفر و پارامتر lpnTabStopPositions نال باشد تب ها به هشت برابر میانگین عرض کاراکترگسترش می یابند.

اگر nTabPositions یک در نظر گرفته شود ،  tab stop ها با فاصله مشخص شده توسط مقدار اول در آرایه lpnTabStopPositions از هم جدا می شوند.

اگر آرایه lpnTabStopPositions حاوی بیش از یک مقدار باشد ، یک tab stop برای هر مقدار در آرایه تا تعداد مشخص شده توسط nTabPositions تنظیم می شود.
















MessageBoxTimeoutW


Undocument ... User32.Dll


MB_YESNOCANCEL=&H3
MB_YESNO=&H4
MB_RETRYCANCEL=&H5
MB_OKCANCEL=&H1
MB_OK=&H0
MB_ICONEXCLAMATION=&H30
MB_ICONHAND=&H10
MB_DEFBUTTON1=&H0
MB_DEFBUTTON2=&H100
MB_RIGHT=&H80000
MB_RTLREADING=&H100000
MB_TOPMOST=&H40000
IDOK=1
IDCANCEL=2
IDYES=6
IDNO=7



MessageBoxW(hWnd,lpText,lpCaption, uType:iFlags)


MessageBoxTimeoutW(hWnd,lpText,lpCaption, uType:iFlags,wLanguage, dwMilliseconds)


2000Milliseconds=2Seconds


iFlags=MB_OK or MB_SETFOREGROUND or MB_SYSTEMMODAL or MB_ICONINFORMATION
iResult=MessageBoxTimeoutW(Application_Handle, 'Test a timeout of 2 seconds.', 'MessageBoxTimeout Test', iFlags,0, 2000)











WS_CAPTION




پنجره ، نوار عنوان یا title bar دارد ( شامل مد  WS_BORDER


WS_CAPTION As Long = &HC00000
WS_MAXIMIZE As Long = &H1000000
WS_MAXIMIZEBOX As Long = &H10000
WS_MINIMIZE As Long = &H20000000
WS_MINIMIZEBOX As Long = &H20000
WS_SYSMENU As Long = &H80000
WS_POPUP As Long = &H80000000
WS_POPUPWINDOW(WS_POPUP | WS_BORDER | WS_SYSMENU)


Dim lngWindow As Long
Dim lFrmHdl As Long
FrmHnd=FindWindowA(vbNullString,frm.Caption)
lngWindow=GetWindowLong(FrmHnd,GWL_STYLE)
lngWindow=lngWindow And (Not WS_CAPTION)
SetWindowLong(FrmHnd,GWL_STYLE,lngWindow)
DrawMenuBar(FrmHnd)











جستجو کردن در سابفرم با استفاده از FindFirst



نرگس محمدی، پاداش پا گذاشتن روی احساسات مادرانه و اقدامات ضدایرانی‌اش را گرفت و برنده جایزه نوبل ۲۰۲۳ شد.



جستجوی عبارت گرفته شده در باکسی از فرم در زیرفرم آن (subFrmEmp)


تعریف متغیر شرطی

تنظیم یک شئ به یک متغیر

استفاده از متد FindFirst


sCriteria = "LastName = '" & Me.txtLastName & "'"
Set rstEmp= Me.subFrmEmp.Form.RecordsetClone
'Find the first occurrence
With rstEmp
     .FindFirst sCriteria
              If .NoMatch Then
                    MsgBox "No match found"
             Else
                   MsgBox "first match found"
            End If
End With


استفاده از ویژگی RecordSetClone برای پیمایش یا انجام عملی روی رکوردهای فرمی مستقل از خود فرم ، مثلا استفاده از متد Dao Find که با فرم نمی تواند بکار برده شود.



You use the RecordsetClone property to navigate or operate on a form's records independent of the form itself. For example, you can use the RecordsetClone property when you want to use a method, such as the DAO Find method, that can't be used with forms.













.Index = "CompanyName" 
.Seek ("T")


.Index = "PrimaryKey"

' Seek record.

.Seek "=", intID



مهر ۱۴۰۲ : افت فشار ،  بیهوش شدن و ضربه پشت سر به لبه سکو


ابهام دیگر درخصوص انتقال آرمیتا گراوند به بیمارستان فجر است، اساساً چرا باید آرمیتا را از ایستگاه متروی شهدا به بیمارستان فجر وابسته به دانشگاه علوم پزشکی ارتش در خیابان پیروزی ببرند درحالی که دو بیمارستان معیری و شفایحیاییان در نزدیکی میدان شهدا قرار دارد؟

اطلاعات ما از مراکز درمانی نشان می‌دهد که دو بیمارستان معیری و شفایحیاییان بیمارستان تخصصی ارتوپدی هستند ( مزخرف ترین بیمارستان های علوم پزشکی ) اما بیمارستان تخصصی و فوق تخصصی فجر دارای بخش‌های جراحی عمومی، جراحی مغز و اعصاب،درمانگاه داخلی، درمانگاه قلب، درمانگاه ریه  و ... است.



۱۳مهر ۱۴۰۲ : ضبط گذرنامه محمود احمدی نژاد بدلیل عدم تامین امنیت در گواتمالا


مخالفت با سفر رئیس جمهور اسبق به گواتمالا

برخی خبرهای غیر رسمی حاکیست با سفرمحمود احمدی نژاد رئیس جمهور اسبق به کشور گواتمالا بدلیل ملاحظات حفاظتی مخالفت شده است.

جمهوری اسلامی ایران در کشور گواتمالا نمایندگی سیاسی ندارد و شرایط این کشور پس از انتخابات اخیر که منجر به منازعه سیاسی بین دو گروه رقیب برنده و بازنده در انتخابات شده، کاملا ناپایدار و غیر امن است.

 آخرین خبر نوشت: احمدی نژاد بر انجام این سفر اصرار دارد و توصیه های دستگاه‌های ذیربط راد نپذیرفته است.



۱۷ مهر ۱۴۰۲ : ( در پی عملیات طوفان الاقصی )

پاسخ ایران به تهدیدات اسرائیل و آمریکا/ اگر می توانستید از خود در برابر فلسطین دفاع می کردید








LinkMasterFields






You can use the LinkChildFields and LinkMasterFields properties together to specify how Microsoft Access links records in a form to records in a subform. If these properties are set, Microsoft Access automatically updates the related record in the subform when you change to a new record in a main form.



SubForm.FilterOnEmptyMaster property (Access) : 
Gets or sets whether all records are displayed when the subform's master field is Null. Read/write Boolean.




  1. 'de-assign link fields 
  2.   Me.DetailWindow.LinkChildFields = ""
  3.   Me.DetailWindow.LinkMasterFields = ""
  4.  
  5. 'replace sub-form with new source
  6.   Me.DetailWindow.SourceObject = "NewFormName"
  7.  
  8. 'reassign links as appropriate for NewFormName
  9.   Me.DetailWindow.LinkChildFields = "FieldName1, FieldName2, FieldName3"
  10.   Me.DetailWindow.LinkMasterFields = "FieldName1, FieldName2, FieldName3"
 


در تصویر زیر دو تا زیرفرم از نوع DataSheet View ساخته شده و در فرم اصلی قرار گرفته ، زمانیکه مکان نما  روی رکورد اول در دیتاشیت سمت چپ قرار بگیره دیتاشیت سمت راست فیلتر میشه و لیست کشورها رو میاره یعنی یک فیلد MasterId در آن وجود دارد که هاید شده و این دو سابفرم طبق این فیلد بهم لینک شده اند.






زبان انگلیسی پایه هفتم-مهر ۱۴۰۲ ( پروفسورهای حکومتی)