Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: list.list(0,1) Добавлено: 23.01.09 20:38  

Автор вопроса:  amentis

Ответить

  Ответы Всего ответов: 27  

Номер ответа: 16
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #16 Добавлено: 29.01.09 18:05
Private Sub listBox1_DrawItem(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles ListBox1.DrawItem
   ' Set the DrawMode property to draw fixed sized items.
   ListBox1.DrawMode = DrawMode.OwnerDrawFixed
   ' Draw the background of the ListBox control for each item.
   e.DrawBackground()
   ' Create a new Brush and initialize to a Black colored brush by default.
   ;Dim myBrush As Brush

   ' Determine the color of the brush to draw each item based on the index of the item to draw.
   Select Case (e.Index)
      Case 0
         myBrush = Brushes.Red
      Case 1
         myBrush = Brushes.Orange
      Case 2
         myBrush = Brushes.Purple
   End Select

   ' Draw the current item text based on the current Font and the custom brush settings.
   e.Graphics.DrawString(ListBox1.Items(e.Index), e.Font, myBrush, New RectangleF(e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height))
   ' If the ListBox has focus, draw a focus rectangle around the selected item.
   e.DrawFocusRectangle()
End Sub


Господа нетчики, может кто-нибудь перевести это в ВБ6?

Ответить

Номер ответа: 17
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #17 Добавлено: 29.01.09 19:50
Smith, открой новую тему - может и достучишся до какого-нибудь знатока!
В подвалы народ редко заглядывает...

Ответить

Номер ответа: 18
Автор ответа:
 GDK



Вопросов: 13
Ответов: 348
 Профиль | | #18 Добавлено: 30.01.09 12:59
Про одинаковую ширину колонки. Это я просто не смог (да и особо не старался) понять как её менять для одной колонки.

Ответить

Номер ответа: 19
Автор ответа:
 GDK



Вопросов: 13
Ответов: 348
 Профиль | | #19 Добавлено: 30.01.09 13:06
Может через API чё нить получится? Сам правда не пробовал. Пробовал только слегка управлять чужой прогой. Ну получалось с помощью др. людей. Некоторые не любят API. Я раньше тоже. Недавно понял что напрасно это.

Ответить

Номер ответа: 20
Автор ответа:
 fAndOrIn



Вопросов: 5
Ответов: 344
 Профиль | | #20 Добавлено: 30.01.09 13:20
Менять ширину колонок указав одновременно ширину каждого примерно так -
  1. ListBox1.ColumnCount = 5
  2. ListBox1.ColumnWidths = "10,20,30,40,50"

Ответить

Номер ответа: 21
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #21 Добавлено: 02.02.09 11:58
Фигаль мне новая тема если есть примеры на других языках и немного мозга :)

Ответить

Номер ответа: 22
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #22 Добавлено: 02.02.09 17:59
А что в VB в листбоксе 2 колонки? Тебе ListView нужен.

Ну если в .NET то там можно переделать процедуру отрисовки и отрисовывать в несколько колонок. Впрочем в VB6 тоже можно но гемороя очень много

Ответить

Номер ответа: 23
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #23 Добавлено: 02.02.09 23:01
Smith пишет:
Господа нетчики, может кто-нибудь перевести это в ВБ6?

На .NET это не переводится, так как тут используются классы, которых нет в VB6.
В VB6 тебе прийдется это делать с использованием сабклассинга и функций GDI. Вобщем советую отказаться от затеи.

Ответить

Номер ответа: 24
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #24 Добавлено: 03.02.09 00:35
А я вот взял и сделал разлиновку в листбоксе.
Именно своей процедурой отрисовки и на VB6.
Brand, ну ведь нет там очень много гемороя
этот твой дотнет это новый наркотик от эмэс :)

  1. 'разлиновка списка
  2. Public OldWndProc As Long
  3. Public SolidBrush As Long
  4. Public MyLineRect As RECT
  5.  
  6. Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  7. Public Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long
  8. Public Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long
  9.  
  10. Private Type RECT
  11.     Left As Long
  12.     Top As Long
  13.     Right As Long
  14.     Bottom As Long
  15. End Type
  16.  
  17. Private Type DRAWITEMSTRUCT
  18.     CtlType As Long
  19.     CtlID As Long
  20.     itemID As Long
  21.     itemAction As Long
  22.     itemState As Long
  23.     hWndItem As Long
  24.     hDC As Long
  25.     rcItem As RECT
  26.     itemData As Long
  27. End Type
  28.  
  29. Private Declare Function FillRect Lib "user32" (ByVal hDC As Long, lpRect As RECT, ByVal hBrush As Long) As Long
  30. Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal MSG As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  31. Private Declare Sub RtlMoveMemory Lib "kernel32.dll" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
  32. Private DIS As DRAWITEMSTRUCT
  33.  
  34. public sub Main()
  35.     MyLineRect.Left = 10                                            'левый отступ разлиновки
  36.     SolidBrush = CreateSolidBrush(GetSysColor(CLng("&H" & Right$(Hex(Folders.ForeColor), 2))) + 10526880) 'цвет разлиновки
  37.     OldWndProc = SetWindowLong(Main.hwnd, -4&, AddressOf MainWndProc)    'включить разлиновку списка
  38. end sub
  39.  
  40. Public Function MainWndProc(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  41.     MainWndProc = CallWindowProc(OldWndProc, hwnd, wMsg, wParam, lParam)
  42.     If wMsg = &H2B& Then
  43.         If Main.Folders.ListCount Then
  44.             Call RtlMoveMemory(DIS, ByVal lParam, 48)
  45.             With MyLineRect
  46.                 .Bottom = DIS.rcItem.Bottom
  47.                 .Top = DIS.rcItem.Bottom - 1
  48.                 .Right = DIS.rcItem.Right
  49.             End With
  50.             FillRect DIS.hDC, MyLineRect, SolidBrush
  51.         End If
  52.     End If
  53. End Function


С ходу это может и не заработает потому, что с скопировано с проекта где и в помине нет сабмэйн, короче вот вам, пинайте, проверять масти нет, а я спать пошел...

Ответить

Номер ответа: 25
Автор ответа:
 GDK



Вопросов: 13
Ответов: 348
 Профиль | | #25 Добавлено: 05.02.09 12:48
И не надо с ходу. Главное чтоб результат был. Короче спасибо. И fAndOrIn у за колонки.

Ответить

Номер ответа: 26
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #26 Добавлено: 06.02.09 17:15
Smith пишет:
этот твой дотнет это новый наркотик от эмэс

Да нет, наркотик это скорее Vb6, с которого уже больше 10 лет никто слезть не может :)))

Ответить

Номер ответа: 27
Автор ответа:
 Smith



ICQ: adamis@list.ru 

Вопросов: 153
Ответов: 3632
 Профиль | | #27 Добавлено: 06.02.09 17:25
:) верно

вообще все это опиум для народа
шестой - старый, дотнэт - новый

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам