PDA

View Full Version : سوال: سوال نرم افزار حسایداری



VisualBasic-NET
یک شنبه 11 مهر 1389, 12:49 عصر
با سلام به دوستان :لبخندساده:
من یه مشکل دارم اونم این که دارم یک برنامه حسابداری می نویسم. تقریباً تموم شده!

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

--------------------------------------------------------------------------
خیلی جستجو کردم ولی چیزی پیدا نکردم. لطفاً کمک کنید! :خجالت:
متد cell end edit نمیشه، این متد بعد از اتمام متن انجام میشه.


لطفاً کمک

VisualBasic-NET
یک شنبه 18 مهر 1389, 16:25 عصر
یعنی هیچ کس جوابی نداره؟

نمی دونید یا نمی خواهید بگید دوستان............

ali_najari
یک شنبه 18 مهر 1389, 19:57 عصر
فکر کنم شما باید حین KeyPress در DatagridView این کار رو بکنی

من خودم خیلی واسه چنین چیزی کار کردم و خیلی هم جستوجو کردم ولی به هیچ نتیجه ای نرسیدم

خوشحال میشم اگه کسی بتونه این مشکل رو حل کنه

Alghoochi
یک شنبه 18 مهر 1389, 22:09 عصر
فکر کنم شما باید حین KeyPress در DatagridView این کار رو بکنی

من خودم خیلی واسه چنین چیزی کار کردم و خیلی هم جستوجو کردم ولی به هیچ نتیجه ای نرسیدم

خوشحال میشم اگه کسی بتونه این مشکل رو حل کنه
استفاده از KeyPress به تنهایی کافی نیست. چون هربار که کاربر کلیدی رو در برنامه فشار بده این قطعه کد فراخوانی میشه و طبیعتاً جستجو انجام میشه. برای اینکه این مشکل پیش نیاد می تونی یه متغیر تعریف کنی و تو رویداد CellBeginEdit مقدار اونو به True و تو رویداد CellEndEdit اونو به False تغییر بدی. توی کدهای KeyPress هم با یه If می تونی بررسی کنی اگه مقدار متغیر True بود جستجو انجام بشه.

از دوستان اگه کسی راه حل بهتری داره اینجا بزاره تا همه استفاده کنیم.

ali_najari
یک شنبه 18 مهر 1389, 23:59 عصر
دوستان اگه بخوایم از KeyPress استفاده کنیم تشخصی متن داخل Cell مشکل هست چون تا زمانی که EndCellEdit نشه مقدار اون فیلد رو نمایش نمیده و اگر هم بخوای از رویداد Keypress استفاده کنی و اطلاعات رو توی یه استرینگ بریزی باز هم مشکل تشخیص کارکترهای Backspace وجود داره و میزان کدی که باید برای اون بنویسی خیلی زیاده

من یه تیکه کد توی یه سایت پیدا کردم ولی نتونستم ازش استفاده کنم

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



Public Sub New()
InitializeComponent()
dataGridView1.Columns.Add("Column1", "Column1")
' Handle the EditingControlShowing event
Me.dataGridView1.EditingControlShowing += New DataGridViewEditingControlShowingEventHandler(Addr essOf dataGridView1_EditingControlShowing)
End Sub

Private Sub dataGridView1_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs)
Dim txtBox As TextBox = TryCast(e.Control, TextBox)
If txtBox IsNot Nothing Then
' Handle the TextChanged event.
txtBox.TextChanged += New EventHandler(AddressOf txtBox_TextChanged)
End If
End Sub

Private Sub txtBox_TextChanged(sender As Object, e As EventArgs)
' Get the text of the cell immediately from sender
Dim txtBox2 As TextBox = TryCast(sender, TextBox)
textBox1.Text = txtBox2.Text
End Sub

VisualBasic-NET
دوشنبه 19 مهر 1389, 08:10 صبح
استفاده از KeyPress به تنهایی کافی نیست. چون هربار که کاربر کلیدی رو در برنامه فشار بده این قطعه کد فراخوانی میشه و طبیعتاً جستجو انجام میشه. برای اینکه این مشکل پیش نیاد می تونی یه متغیر تعریف کنی و تو رویداد CellBeginEdit مقدار اونو به True و تو رویداد CellEndEdit اونو به False تغییر بدی. توی کدهای KeyPress هم با یه If می تونی بررسی کنی اگه مقدار متغیر True بود جستجو انجام بشه.

از دوستان اگه کسی راه حل بهتری داره اینجا بزاره تا همه استفاده کنیم.

دوست عزیز سلام
من تست کردم ولی وقتی دارید داخل سلول تایپ می کنید متد KeyPress کار نمی کنه!

VisualBasic-NET
دوشنبه 19 مهر 1389, 08:17 صبح
من یه کد خوب پیدا کردم که وقتی می نویسم مثل عکس زیر جستجو می کنه. ولی من می خوام داخل دیتا گرید نمایش بده. چون چندتا فیلد هست.

DoDoklak
دوشنبه 19 مهر 1389, 08:41 صبح
برای کنترل لحظه ایی مقادیر داخل سلول در دیتا گرید به روش زیر عمل کنید

1- در بالای فرم یک متغیر از نوع DataGridViewTextBoxEditingControl تعریف کنید



Friend WithEvents txt_dgv As New DataGridViewTextBoxEditingControl


2-در رویداد EditingControlShowing مربوط به دیتا گرید کنترل رو به متغیر مربوطه بدید



Private Sub DGV1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlSho wingEventArgs) Handles DGV1.EditingControlShowing
txt_dgv = e.Control
End Sub


3-حالا کنترل مربوطه هر سه حالت KeyDown,KeyPress,TextChanging سلول ها رو داره دقیقا مثل Textbox



Private Sub txt_dgv_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txt_dgv.KeyDown
' کدهای برنامه
End Sub




rivate Sub txt_dgv_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt_dgv.KeyPress
' کدهای برنامه
End Sub




Private Sub txt_dgv_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txt_dgv.TextChanged
' کدهای برنامه
End Sub

VisualBasic-NET
دوشنبه 19 مهر 1389, 09:32 صبح
مرسی دوست عزیز
خیلی عالی بود.