[yardım] Textbox,Combobox ve Checkbox ile listview maskeleme

Listeleme kutusu. Verileriniz klasör ve dosyalarınızı görsel olarak kontrol edebileceğiniz bir nesne modeli.

[yardım] Textbox,Combobox ve Checkbox ile listview maskeleme

İleti#1)  free_zone » 21 May 2020 15:34

Merhaba arkadaşlar ,
Listview Subitem içeriklerini mouse ile çift tıklamış olduğum sütunu değiştirmek için Textbox Checkbox ve combobox ile maskeleme yapma yöntemini uzun bir araştırmadan sonra başarabildim . başka arkadaşlara yardımcı olması için ekte paylaştım Exceli .
Fakat bu otomasyonu biraz daha güçlendirmek istiyorum bunun için sizden yardım rica edicem .

açıklamam :
listview_MouseDown özelliğinde bulunan (X As stdole.OLE_XPOS_PIXELS) değerini bir değişkene atama yaptım
Kod: Tümünü seç
Private Sub LV0106_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As stdole.OLE_XPOS_PIXELS, ByVal Y As stdole.OLE_YPOS_PIXELS)
  On Error Resume Next
   Col = X
End Sub

Ve Breakpoint yardımı ile (col=x satırını F9 ile dondurdum ve değeri kayıt ettim) her iki kolon arasındaki X değerini kaydettim ve ondan sonra elime Listview sütunların pixel aralığını elde ettim
Kod: Tümünü seç
x=array( "0", "120", "230", "290", "334", "381", "508", "601", "681", "828", "894", "926")


Bunun sayesinde her sütuna farklı bir maskeleme uyguladım (Textbox,Chekbox veya Combobox) maskelemelerinden.

İlk sorum : Listview sütunların X Breakpoint ile bulmak yerine daha otomasyonlu veya code ile bulma imkanım olabilir mi ,Çünkü değerler sabit kalıyor eğer listview sütun genişliğini değiştirirsem işler karışıyor . bye

İkinci sorum : listview sütun genişliğini nasıl engelleyebilirim sabit kalması için .

Üçüncü sorum : bu genel bir soru olacak Userform,un daha hızlı ve sağlıklı çalışmasını istiyorum sizce
sıkca kullanıcağım değişkenleri userform'un başında yazmakta bi sakınca varmıdır yada (UserForm_Initialize) direk tanıtmak sürekli Set etme yerine (userform başlangıcında değişken atama) rar dosyası gibi.


herşey için teşekkürler umarım birilerine yarar listview maskeleme işlemi
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
free_zone
Siteye Alışmış
 
Adı Soyadı:Bahadır Soysal
Kayıt: 03 Tem 2009 11:09
Konum: istanbul
Meslek: sales executive
Yaş: 40
İleti: 125
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul

Cevap: [yardım] Textbox,Combobox ve Checkbox ile listview ma

İleti#2)  Tarkan VURAL » 21 May 2020 17:05

Merhaba,
Öncelikle elinize sağlık. --)(
Şu konuyu incelemiş miydiniz?
viewtopic.php?f=49&t=169&p=453

İkinci soru için şuraya bakabilirsiniz : http://www.vbforums.com/showthread.php? ... ew-Columns
Resim
www.tarkanvural.com.tr

İnnâ lillâhi ve innâ ileyhi raciûn
Şüphesiz ki; biz Allah’a âidiz ve vakti geldiğinde O’na döndürüleceğiz.

HasbunAllâhu ve nimel vekîl
Bize Allah yeter. O ne güzel vekildir.


ExcelVBA.NET' e katkıda bulunmak ister misiniz ?
Kullanıcı avatarı
Tarkan VURAL
Yönetim Kurulu
 
Adı Soyadı:Tarkan VURAL
Kayıt: 14 Haz 2008 18:27
Konum: @tarkanvural73
Meslek: LUU, Database Expert, Senior Software Specialist, Developer
Yaş: 46
İleti: 27311
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul - Beylikdüzü

Cevap: Cevap: [yardım] Textbox,Combobox ve Checkbox ile list

İleti#3)  free_zone » 21 May 2020 19:56

Tarkan VURAL yazdı:Merhaba,
Öncelikle elinize sağlık. --)(
Şu konuyu incelemiş miydiniz?
viewtopic.php?f=49&t=169&p=453

İkinci soru için buraya bakabilirsiniz : http://www.vbforums.com/showthread.php? ... ew-Columns


Merhaba Tarlan Bey ,
her zaman hızır gibi imdada yetişiyorsunuz ,
Evet o konuyu bu işe başlarken inceledim zaten ilk önce o şekilde kodları ayarlamıştım fakat klavye kullanımı çok az oluyor bizim şirkette genellikle mouse ile işlem yapıyoruz "Fast Track disc" 'lerinde .
o yuzden aradığım mouse ile belirleme işlemini bulmak için https://books.google.com VBA ve VB ile ilgili tüm kitapları okudum desem yalan olmaz. :D

Ve galiba ufak bir matematiksel hesaptan sonra ilk sorunu çözdüm ekli olan excel de şuan çalışıyor ama sütun arttıkça hata verir mi bilmem :)

Böyle bir matematiksel bağlam buldum inşallah doğrudur çünkü columnwidth parametresi nedir bilmiyorum (inc,cm,pix)
ama
ary2 = [{"start","end", "column_no";"0","133","1";"133","266","2";"266","399","3"}]
'width=100 x=133 ozman 1,33 deger farkı


konu ile ilgili düşüncenizi beklerim

Kod: Tümünü seç
Dim col As Integer
Dim aa_lvheader_no As Integer

Private Sub LV0106_DblClick()
Dim stunarasi As MSComctlLib.ColumnHeaders
stuntopla = 0
Set stunarasi = LV0106.ColumnHeaders
stuntopla = stunarasi(1).Width
For x = 2 To stunarasi.Count
stuntopla = stunarasi(x).Width + stuntopla
Select Case col
                Case 0 To WorksheetFunction.RoundUp((stunarasi(1).Width * 1.33), 0)
                                                                 'birinci sutun yani item'in kendisi değiştirmeye gerek yok
                                             bob = WorksheetFunction.RoundUp((stunarasi(1).Width * 1.33), 0)
                                             aa_lvheader_no = 1
                                             x = LV0106.ColumnHeaders.Count
                                                           
                                                           
'                Case stunarasi(stunarasi.Count - 1).Width To stunarasi(stunarasi.Count).Width
'                                                            FRxxx1ch.Font.Size = LV0106.Font.Size - 1
'                                                            aa_lvheader_no = stunarasi.Count
'                                            With FRxxx1ch
'                                                        .Top = LV0106.SelectedItem.Top + LV0106.Top + 1
'                                                        .Width = LV0106.ColumnHeaders(10).Width + 1
'                                                        .Left = LV0106.ColumnHeaders(10).Left + 2
'                                                        .Height = LV0106.ListItems(LV0106.SelectedItem.Index).Height + 1
'                                                        Chxxx1.Move 0, 0, .InsideWidth, .InsideHeight
'                                                        .Visible = True
'                                                        .ZOrder
'                                                        'Me.Chxxx1.Value = False
'
'                                            End With
                                                                   
                       
                       
                        x = LV0106.ColumnHeaders.Count
                Case WorksheetFunction.RoundUp(((stuntopla - stunarasi(x - 1).Width) * 1.33), 0) To WorksheetFunction.RoundUp((stuntopla * 1.33), 0)
                                    aa_lvheader_no = x
                                     Select Case aa_lvheader_no
                                             Case 2, 3, 4
                                                    FRxxx5ch.Visible = False
                                                    FRxxx1ch.Visible = False
                                                    With FRxxx4ch
                                                        .Top = Me.LV0106.SelectedItem.Top + Me.LV0106.Top + 2
                                                        .Width = Me.LV0106.ColumnHeaders(aa_lvheader_no).Width
                                                        .Left = Me.LV0106.ColumnHeaders(aa_lvheader_no).Left + Me.LV0106.Left + 2
                                                        .Height = Me.LV0106.SelectedItem.Height + 1
                                                        CBxxx1.Move 0, 0, .InsideWidth, .InsideHeight
                                                    Call cbxxx1_icerik
                                                        .Visible = True
                                                        .ZOrder
                                                    End With
                                             Case 5, 6
                                                    FRxxx4ch.Visible = False
                                                    FRxxx1ch.Visible = False
                                                    With FRxxx5ch
                                                        .Top = Me.LV0106.SelectedItem.Top + Me.LV0106.Top + 2
                                                        .Width = Me.LV0106.ColumnHeaders(aa_lvheader_no).Width
                                                        .Left = Me.LV0106.ColumnHeaders(aa_lvheader_no).Left + Me.LV0106.Left + 2
                                                        .Height = Me.LV0106.SelectedItem.Height '+ 1
                                                        TBxxx1.Move 0, 0, .InsideWidth, .InsideHeight
                                                       
                                                        Call TBxxx1_icerik
                                                        .Visible = True
                                                        .ZOrder
                                                        TBxxx1.SetFocus
                                                    End With
                     
                     
                     
                                            Case 7
                                            FRxxx5ch.Visible = False
                                            FRxxx4ch.Visible = False
                                             FRxxx1ch.Font.Size = LV0106.Font.Size - 1
                                                            aa_lvheader_no = stunarasi.Count
                                            With FRxxx1ch
                                                        .Top = LV0106.SelectedItem.Top + LV0106.Top + 2
                                                        .Width = LV0106.ColumnHeaders(aa_lvheader_no).Width + 1
                                                        .Left = LV0106.ColumnHeaders(aa_lvheader_no).Left + Me.LV0106.Left + 2
                                                        .Height = LV0106.ListItems(LV0106.SelectedItem.Index).Height + 1
                                                        Chxxx1.Move 0, 0, .InsideWidth, .InsideHeight
                                                        .Visible = True
                                                        .ZOrder
                                                        'Me.Chxxx1.Value = False

                                            End With
                     
                                            End Select
                   
                     x = LV0106.ColumnHeaders.Count
                     
                     
                     
End Select
Next x
End Sub

Private Sub LV0106_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)
ary2 = [{"start","end", "column_no";"0","133","1";"133","266","2";"266","399","3"}]
'width=100 x=133 ozman 1,33 deger farkı
'
col = x
End Sub

Sub cbxxx1_icerik()
CBxxx1.Font.Size = LV0106.Font.Size - 1
CBxxx1.Clear
Select Case aa_lvheader_no
Case Is = 2
' o sutunda istenilen combobox bilgisini gir
Case Is = 3
   ' o sutunda istenilen combobox bilgisini gir
Case Is = 4
  ' o sutunda istenilen combobox bilgisini gir
End Select
End Sub

Sub TBxxx1_icerik()
TBxxx1.Font.Size = LV0106.Font.Size - 1
Select Case aa_lvheader_no
Case Is = 5
' o sutunda istenilen textbox bilgisini gir
Case Is = 6
  ' o sutunda istenilen textbox bilgisini gir
End Select
End Sub




Private Sub UserForm_Initialize()
LV0106.ColumnHeaders.Add , , "item", "120"
LV0106.ColumnHeaders.Add , , "subitem1", "90"
LV0106.ColumnHeaders.Add , , "subitem2", "100"
LV0106.ColumnHeaders.Add , , "subitem3", "80"
LV0106.ColumnHeaders.Add , , "subitem4", "50"
LV0106.ColumnHeaders.Add , , "subitem5", "60"
LV0106.ColumnHeaders.Add , , "subitem6", "30"
With LV0106
   .ListItems.Clear
  .Gridlines = True
  '.View = lvwReport
  .LabelEdit = lvwManual
  .FullRowSelect = True
  .View = 3
  .FullRowSelect = True
    .ListItems.Add , , "deneme1"
    .ListItems.Add , , "deneme2"
    .ListItems.Add , , "deneme3"
End With
End Sub




saygılarımla

Not: cçözüldü olarak güncelliyebilirsiniz
Kullanıcı avatarı
free_zone
Siteye Alışmış
 
Adı Soyadı:Bahadır Soysal
Kayıt: 03 Tem 2009 11:09
Konum: istanbul
Meslek: sales executive
Yaş: 40
İleti: 125
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul

Cevap: Cevap: Cevap: [yardım] Textbox,Combobox ve Checkbox i

İleti#4)  free_zone » 21 May 2020 20:00

free_zone yazdı:
Merhaba Tarlan Bey ,


İsim hatası için özür dilerim Tarkan bey
Kullanıcı avatarı
free_zone
Siteye Alışmış
 
Adı Soyadı:Bahadır Soysal
Kayıt: 03 Tem 2009 11:09
Konum: istanbul
Meslek: sales executive
Yaş: 40
İleti: 125
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul

REKLAM
Excel Logo XML Oluşturucu
Logo Object Designer ile Uyarlama

Cevap: [yardım] Textbox,Combobox ve Checkbox ile listview ma

İleti#5)  free_zone » 01 Haz 2020 14:35

Merhaba,
Bir kaç değişiklik yaptım kodlamalarda artık scrollbar sağa tarafa alındığındada maskeleme sütunları takip ediyor


saygılarımla

Kod: Tümünü seç
Dim col As Integer
Dim aa_lvheader_no As Integer
Dim dimItem As ListItem






Private Sub LV0106_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)
If col = 0 Then Exit Sub
Select Case LV0106.GetFirstVisible.Left
Case Is < 1.5
FRxxx5ch.Visible = False
FRxxx4ch.Visible = False
FRxxx1ch.Visible = False
Case Is = 1.5
FRxxx5ch.Visible = False
FRxxx4ch.Visible = False
FRxxx1ch.Visible = False
End Select
End Sub
Private Sub LV0106_DblClick()
Dim SelectedItem As ListItem
Dim colXclick
'ilk hucrenin sol degerini bulmak case mantiginda bulucaz sutunu
Set SelectedItem = LV0106.GetFirstVisible
selecteditemleft = Abs(SelectedItem.Left)
If selecteditemleft = 1.5 Then selecteditemleft = 0
Dim stunarasi As MSComctlLib.ColumnHeaders
Set stunarasi = LV0106.ColumnHeaders
stuntopla = stunarasi(1).Width

colXclick = WorksheetFunction.RoundDown(col / 1.324, 0)
For colmncount = 2 To stunarasi.Count
stuntopla = stunarasi(colmncount).Width + stuntopla

Select Case colXclick
                Case 0 To (stunarasi(1).Width - selecteditemleft)
                                              'birinci sutun yani item'in kendisi değiştirmeye gerek yok eger degistirmek istenirse eklerim buraya
                                             aa_lvheader_no = 1
                                            colmncount = LV0106.ColumnHeaders.Count
                Case (stuntopla - stunarasi(colmncount).Width - selecteditemleft) To (stuntopla - selecteditemleft) + 2
                                    aa_lvheader_no = colmncount
                                     Select Case aa_lvheader_no
                                             Case 2, 3, 4
                                                    FRxxx5ch.Visible = False
                                                    FRxxx1ch.Visible = False
                                                    With FRxxx4ch
                                                        .Top = Me.LV0106.SelectedItem.Top + Me.LV0106.Top + 2
                                                        .Width = Me.LV0106.ColumnHeaders(aa_lvheader_no).Width
                                                        .Left = Me.LV0106.ColumnHeaders(aa_lvheader_no).Left + Me.LV0106.Left + 2 - selecteditemleft
                                                        .Height = Me.LV0106.SelectedItem.Height + 1
                                                        CBxxx1.Move 0, 0, .InsideWidth, .InsideHeight
                                                    Call cbxxx1_icerik
                                                        .Visible = True
                                                        .ZOrder
                                                    End With
                                             Case 5, 6
                                                    FRxxx4ch.Visible = False
                                                    FRxxx1ch.Visible = False
                                                    With FRxxx5ch
                                                        .Top = Me.LV0106.SelectedItem.Top + Me.LV0106.Top + 2
                                                        .Width = Me.LV0106.ColumnHeaders(aa_lvheader_no).Width
                                                        .Left = Me.LV0106.ColumnHeaders(aa_lvheader_no).Left + Me.LV0106.Left + 2 - selecteditemleft
                                                        .Height = Me.LV0106.SelectedItem.Height '+ 1
                                                        TBxxx1.Move 0, 0, .InsideWidth, .InsideHeight
                                                       
                                                        Call TBxxx1_icerik
                                                        .Visible = True
                                                        .ZOrder
                                                        TBxxx1.SetFocus
                                                    End With
                     
                     
                     
                                            Case 7, 8, 9
                                            FRxxx5ch.Visible = False
                                            FRxxx4ch.Visible = False
                                             FRxxx1ch.Font.Size = LV0106.Font.Size - 1
                                                            aa_lvheader_no = colmncount
                                            With FRxxx1ch
                                                        .Top = LV0106.SelectedItem.Top + LV0106.Top + 2
                                                        .Width = LV0106.ColumnHeaders(aa_lvheader_no).Width + 1
                                                        .Left = LV0106.ColumnHeaders(aa_lvheader_no).Left + Me.LV0106.Left + 2 - selecteditemleft
                                                        .Height = LV0106.ListItems(LV0106.SelectedItem.Index).Height + 1
                                                        Chxxx1.Move 0, 0, .InsideWidth, .InsideHeight
                                                        .Visible = True
                                                        .ZOrder
                                            End With
                                            End Select
                    colmncount = LV0106.ColumnHeaders.Count
                     
                     
                     
End Select
Next colmncount
End Sub
Private Sub LV0106_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'lv den cikinca kaydet verileri sheet'e
End Sub

Private Sub LV0106_ItemClick(ByVal item As MSComctlLib.ListItem)
'FRxxx5ch.Visible = False
'FRxxx4ch.Visible = False
'FRxxx1ch.Visible = False
Set dimItem = item
End Sub


Private Sub LV0106_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)
'listview ilk basladiginda scrollbar en solda item.left=1.5 odegeri col ekle
ScrollBaree = WorksheetFunction.RoundUp(1.5 * 1.324, 0)
col = x + ScrollBaree
FRxxx5ch.Visible = False
FRxxx4ch.Visible = False
FRxxx1ch.Visible = False
End Sub

Function Combobox_rowsours(ft_sh As String, ft_from_colnm As String, ft_to_colnm As String, ft_rang_colnm As String) As String
aa_kitap = "'[" & ThisWorkbook.Name & "]"
Combobox_rowsours = "=" & aa_kitap & ft_sh & "'!" & ThisWorkbook.Sheets(ft_sh).Range(ft_from_colnm & "2:" & ft_to_colnm _
                    & ThisWorkbook.Sheets(ft_sh).Range(ft_rang_colnm & "65000").End(3).Row).Address
End Function
Sub cbxxx1_icerik()
CBxxx1.Font.Size = LV0106.Font.Size - 1

Select Case aa_lvheader_no
Case Is = 2
' o sutunda istenilen combobox bilgisini gir
With CBxxx1
.RowSource = Combobox_rowsours("array_combobox", "A", "A", "A")
End With
Case Is = 3
   ' o sutunda istenilen combobox bilgisini gir
   CBxxx1.RowSource = Combobox_rowsours("array_combobox", "B", "B", "B")
Case Is = 4
  ' o sutunda istenilen combobox bilgisini gir
  CBxxx1.RowSource = Combobox_rowsours("array_combobox", "C", "C", "C")
End Select
End Sub

'Private Sub CBxxx1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'P = KeyAscii
'If 13 = P Then


Private Sub CBxxx1_CHANGE()
Select Case aa_lvheader_no
Case Is = 2
' o sutunda istenilen combobox bilgisini gir
With CBxxx1
dimItem.SubItems(1) = .Text
End With
Case Is = 3
With CBxxx1
dimItem.SubItems(2) = .Text
End With
Case Is = 4
  ' o sutunda istenilen combobox bilgisini gir
With CBxxx1
dimItem.SubItems(3) = .Text
End With
End Select
End Sub

Sub TBxxx1_icerik()
TBxxx1.Font.Size = LV0106.Font.Size - 1
Select Case aa_lvheader_no
Case Is = 5
' o sutunda istenilen textbox bilgisini gir
Case Is = 6
  ' o sutunda istenilen textbox bilgisini gir
End Select
End Sub
Sub LV_TO_SHEET_PZT()


ColHeadWIDTH = Array("200", "120", "100", "150", "150", "40", "40", "40")
R = 1
Do
LV0106.ColumnHeaders.Add , , Sheet5.Cells(1, R), ColHeadWIDTH(R - 1)
LV0106.ListItems.Add , , Sheet5.Cells(R + 1, 1)
R = R + 1
Loop Until R = 9


End Sub






Private Sub UserForm_Initialize()

With LV0106
   .ListItems.Clear
  .Gridlines = True
  .View = lvwReport
  .LabelEdit = lvwManual
  .FullRowSelect = True
  .View = 3
.AllowColumnReorder = True
.Appearance = cc3D ' ccFlat
.Arrange = lvwNone
.Enabled = True
'.FlatScrollBar = True
.FullRowSelect = True
Call LV_TO_SHEET_PZT
.Refresh
End With
End Sub

Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
free_zone
Siteye Alışmış
 
Adı Soyadı:Bahadır Soysal
Kayıt: 03 Tem 2009 11:09
Konum: istanbul
Meslek: sales executive
Yaş: 40
İleti: 125
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İstanbul


Forum ListView

Online Kullanıcılar

Bu forumu görüntüleyenler: Kayıtlı kullanıcı yok ve 1 misafir

Bumerang - Yazarkafe