Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
77 / 7 / 2
Регистрация: 15.02.2014
Сообщений: 301

Перевернутый листбокс

26.12.2014, 16:51. Показов 1438. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
А кто скажет как это реализовать в лист боксе????????
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.12.2014, 16:51
Ответы с готовыми решениями:

Считывание Текста с ЛистБокс.+ Распечатка
Доброго времени суток, прошу вашей помощи, возможно мой код очень убоги но особо заморачиватся я не стал. Если у кого есть по лучше...

Создать листбокс на форме со значениями из таблицы.
Хэлл лоу all! Помогите штоль! есть таблица в формате *.mdb, надо сделать лист бокс в форме со значениями этой таблицы. Це ж был вариант...

Вывести в листбокс информацию о видеокарте, материнской плате и свойства экрана
Должно работать после нажатия command) Добавлено через 5 часов 49 минут Неужели никто не может этого в VB?(

18
38 / 38 / 16
Регистрация: 04.03.2014
Сообщений: 249
26.12.2014, 17:02
Попробуйте вот так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Private Function Vertical_Horizontal(ByVal nStr As String) As String
Dim MyStr As String, i As Integer
Static Vert As Boolean
If Vert = False Then
For i = 1 To Len(nStr)
If i Then
MyStr = MyStr + Mid$(nStr, i, 1) & vbCrLf
Else
MyStr = MyStr + Mid$(nStr, i, 1)
End If
Next
Vertical_Horizontal = MyStr
Vert = True
Else
For i = 1 To Len(nStr) Step 3
MyStr = MyStr + Mid$(nStr, i, 1)
Next
Vertical_Horizontal = MyStr
Vert = False
End If
End Function
 
Private Sub Command1_Click()
Label1.AutoSize = True
Label1.Caption = Vertical_Horizontal(Label1.Caption)
End Sub
Код не мой, нашел на просторах интернета, работает.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
26.12.2014, 19:57
Цитата Сообщение от CANEKZUBOV Посмотреть сообщение
А кто скажет как это реализовать в лист боксе????????
Нарисуй как ты себе это представляешь.
0
77 / 7 / 2
Регистрация: 15.02.2014
Сообщений: 301
26.12.2014, 22:05  [ТС]
Нууу типо так)))))))))
Миниатюры
Перевернутый листбокс  
0
77 / 7 / 2
Регистрация: 15.02.2014
Сообщений: 301
26.12.2014, 22:12  [ТС]
Просто ячейки или как там они называются размещены именно в таком положении !!! как это реализовать?

Добавлено через 3 минуты
ну и текст истественно)))
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
27.12.2014, 00:17
Самое простое - написать свой листбокс. Точно не знаю, но предполагаю что можно попробовать задействовать мировые трансформации в контексте устройства списка для поворота содержимого на 90 градусов (это нужно проверять).
0
77 / 7 / 2
Регистрация: 15.02.2014
Сообщений: 301
27.12.2014, 12:25  [ТС]
Как это сделать и каким способом???
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
27.12.2014, 19:25
Цитата Сообщение от CANEKZUBOV Посмотреть сообщение
Как это сделать и каким способом???
Проверил - это не работает, так что пиши свой лист.
0
77 / 7 / 2
Регистрация: 15.02.2014
Сообщений: 301
28.12.2014, 00:34  [ТС]
да уж)))))) а есть кактой-то другой контрол что имеет такие же списки но там моно перевернуть так текст?)
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
28.12.2014, 00:35
CANEKZUBOV, еще раз:
Цитата Сообщение от The trick Посмотреть сообщение
Самое простое - написать свой листбокс
Цитата Сообщение от The trick Посмотреть сообщение
так что пиши свой лист
Для чего в принципе может понадобится такой лист?
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
28.12.2014, 01:45
Так что ли?
Изображения
 
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
28.12.2014, 01:50
Конечно можно и наоборот, но как мне помнится из правил нанесения надписей это не правильно
Изображения
 
0
77 / 7 / 2
Регистрация: 15.02.2014
Сообщений: 301
28.12.2014, 02:26  [ТС]
так!!! как ты это сделал????))))) аааа просвети меня)))))))))))0

Добавлено через 2 минуты
у меня задача: создать расписание пар,и список учителей (который торчит в лист бокс) по идеям учителя должен быть в верху и текст должен быть именно в таком положении)))))))))

Добавлено через 2 минуты
очень интересно каким это образом сделано...........)))))))) я весь гугл облазил нече не нашел)))))))))
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
28.12.2014, 02:37
Просто как дверь!
Делаешь всё в ексел.
Потом в бейсике OLE ..
0
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
28.12.2014, 07:50
Цитата Сообщение от Alex77755 Посмотреть сообщение
Делаешь всё в ексел.
Потом в бейсике OLE ..
С таким же результатом можно просто картинки с фамилиями вставить. Картинки даже лучше, там можно будет программно менять надписи.
1
77 / 7 / 2
Регистрация: 15.02.2014
Сообщений: 301
28.12.2014, 09:57  [ТС]
я пытался,у меня вылетают мощные проблема с кодировкой!) не подскажете норм код?
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
28.12.2014, 12:51
У меня проблем не было.
вот так добавлял данные
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub SAV_Click() ' сохранение
    ' проверка запненности всех полей
    For R = 0 To 3
    If Комбо1(R).Text = "" Then MsgBox "Заполнены не все поля", vbCritical, "Будте внимательны": Exit Sub
    Next R
    If Текст1.Text = "" Or Текст2.Text = "" Then MsgBox "Заполнены не все поля", vbCritical, "Будте внимательны": Exit Sub
    
    With Главная.OL.object
        '    первая пустая строка
           PS = .Application.WorksheetFunction.CountA(.Sheets(1).range("A:A")) + 1
            For R = 0 To 3
                    .Sheets(1).Cells(PS, R + 1) = Комбо1(R).Text
            Next R
                    .Sheets(1).Cells(PS, 5) = CDbl(Текст1.Text)
                    .Sheets(1).Cells(PS, 6) = CDbl(Текст2.Text)
                .Save
    End With
        ECX_Click
End Sub
С таким же результатом можно просто картинки с фамилиями вставить
Кому как. Картинки же тоже надо сначала сделать.
А с OLE объектом можно работать как с листом ексел. Заполнять, форматировать.
Функции листа работают.
0
77 / 7 / 2
Регистрация: 15.02.2014
Сообщений: 301
28.12.2014, 13:52  [ТС]
спс возьму на заметку))))
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
28.12.2014, 20:56
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Посмотри наипростейшее сам допилишь:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
Option Explicit
 
Private Type POINTAPI
    X As Long
    Y As Long
End Type
 
Private Declare Function DPtoLP Lib "gdi32" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long
Private Declare Function SetGraphicsMode Lib "gdi32" (ByVal hdc As Long, ByVal iMode As Long) As Long
Private Declare Function SetWorldTransform Lib "gdi32" (ByVal hdc As Long, lpXform As Any) As Long
Private Declare Function DrawFocusRect Lib "user32" (ByVal hdc As Long, lpRect As Any) As Long
 
Private Const GM_ADVANCED   As Long = 2
 
Private Type ListItem
    Text        As String
    ItemData    As Long
End Type
 
Private Const GRANULARITY   As Long = 100
Private Const ItemHeight    As Long = 16
 
Dim WithEvents hsb As HScrollBar
 
Dim mList()     As ListItem
Dim mListCount  As Long
Dim mListIndex  As Long
Dim isFocused   As Boolean
 
Public Property Get ListIndex() As Long
 
    ListIndex = mListIndex
    
End Property
 
Public Property Let ListIndex(ByVal Index As Long)
 
    If Index < 0 Or Index >= mListCount Then
        Err.Raise 9
        Exit Property
    End If
    
    mListIndex = Index
    UserControl.Refresh
    
End Property
 
Public Property Get ListCount() As Long
 
    ListCount = mListCount
    
End Property
 
Public Property Get List(ByVal Index As Long) As String
 
    If Index < 0 Or Index >= mListCount Then
        Err.Raise 9
        Exit Property
    End If
    
    List = mList(Index).Text
    
End Property
 
Public Property Let List(ByVal Index As Long, Text As String)
 
    If Index < 0 Or Index >= mListCount Then
        Err.Raise 9
        Exit Property
    End If
    
    mList(Index).Text = Text
    UserControl.Refresh
    
End Property
 
Public Sub AddItem(ByVal Item As String, Optional ByVal ItemData As Long)
    Dim idx1    As Long
    
    idx1 = mListCount
    
    If idx1 > UBound(mList) Then
        ReDim Preserve mList(UBound(mList) + GRANULARITY)
    End If
 
    mList(idx1).Text = Item
    mList(idx1).ItemData = ItemData
    
    mListCount = mListCount + 1
    
    UpdateScroll
    UserControl.Refresh
    
End Sub
 
Public Sub RemoveItem(ByVal Index As Long)
    Dim idx1    As Long
    
    If Index < 0 Or Index >= mListCount Then
        Err.Raise 9
        Exit Sub
    End If
    
    For idx1 = Index To mListCount - 2
        mList(idx1) = mList(idx1 + 1)
    Next
    
    mListCount = mListCount - 1
    
    If mListCount > 0 And (mListCount Mod GRANULARITY) = 0 Then
        ReDim Preserve mList(mListCount - 1)
    End If
    
    UpdateScroll
    UserControl.Refresh
    
End Sub
 
Private Sub UpdateScroll()
 
    If mListCount * ItemHeight > UserControl.ScaleWidth Then
        hsb.Move 0, UserControl.ScaleHeight - hsb.Height, UserControl.ScaleWidth
        hsb.Max = ((mListCount * ItemHeight) - UserControl.ScaleWidth) / ItemHeight
        
        If Not hsb.Visible Then
            hsb.Visible = True
        End If
    
    Else
        hsb.Max = 0
        hsb.Visible = False
    End If
    
End Sub
 
Private Sub Redraw()
    Dim mtx(5)  As Single
    Dim idx     As Long
    Dim curY    As Long
    
    mtx(0) = 1: mtx(3) = 1
    SetWorldTransform UserControl.hdc, mtx(0)
    UserControl.Cls
    mtx(0) = 0: mtx(1) = 1: mtx(2) = -1: mtx(4) = UserControl.ScaleWidth: mtx(3) = 0
    SetWorldTransform UserControl.hdc, mtx(0)
    
    For idx = hsb.Max - hsb.Value To mListCount - 1
    
        UserControl.CurrentY = curY
        
        If idx = mListIndex Then
            
            UserControl.Line -Step(UserControl.ScaleHeight, ItemHeight), vbHighlight, BF
            
            If isFocused Then
                Dim rc(3) As Long
                
                rc(0) = 0: rc(1) = curY: rc(2) = UserControl.ScaleHeight: rc(3) = curY + ItemHeight
                DrawFocusRect UserControl.hdc, rc(0)
                
            End If
 
            UserControl.CurrentY = UserControl.CurrentY - ItemHeight
 
        End If
        
        UserControl.CurrentX = 3
        
        UserControl.Print mList(idx).Text
        
        curY = curY + ItemHeight
        
        If curY > UserControl.ScaleWidth Then Exit For
        
    Next
    
End Sub
 
Private Sub hsb_Change()
    Redraw
End Sub
 
Private Sub hsb_Scroll()
    Redraw
End Sub
 
Private Sub UserControl_EnterFocus()
    UserControl_GotFocus
End Sub
 
Private Sub UserControl_ExitFocus()
    UserControl_LostFocus
End Sub
 
Private Sub UserControl_GotFocus()
 
    isFocused = True
    UserControl.Refresh
    
End Sub
 
Private Sub UserControl_LostFocus()
 
    isFocused = False
    UserControl.Refresh
    
End Sub
 
Private Sub UserControl_Initialize()
    ReDim mList(GRANULARITY - 1)
    SetGraphicsMode UserControl.hdc, GM_ADVANCED
    Set hsb = UserControl.Controls.Add("VB.HScrollBar", "hsb")
    UserControl.ScaleMode = vbPixels
    UserControl.DrawStyle = vbInvisible
End Sub
 
Private Sub UserControl_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim pt  As POINTAPI
    Dim sel As Long
    
    If mListCount = 0 Then Exit Sub
    
    pt.X = X: pt.Y = Y
    
    DPtoLP UserControl.hdc, pt, 1
    
    sel = pt.Y \ ItemHeight + (hsb.Max - hsb.Value)
    
    If sel >= mListCount Then sel = mListCount - 1
    If sel < 0 Then sel = 0
    
    Me.ListIndex = sel
    
End Sub
 
Private Sub UserControl_Paint()
    Redraw
End Sub
Миниатюры
Перевернутый листбокс  
Вложения
Тип файла: rar RotListBox.rar (2.7 Кб, 14 просмотров)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.12.2014, 20:56
Помогаю со студенческими работами здесь

Нужно чтобы при каждом повторении в конце цикла в листбокс добавлялась строчка
Здравствуйте такая ситуация- в цикле For i = 1 to n рассчитываются многократно значения переменных x и y. При чем каждый раз они...

Перевернутый массив
public class uzd3 { public static void main(String args) { int neig=0; int teig=0; int numbers =...

Перевёрнутый массив
Всем привет. Такой вопрос: Как сделать перевёрнутый массив? Первый цикл for будет создан для ввода данный в массив. Второй массив я...

Перевернутый массив
Добрый день! Есть массив чисел. Нужно его перевернуть, формулой массива. Я его перевернула, но когда пишу формулу массива, что-то идет...

Перевёрнутый массив в StringGrid
Доброго времени суток, форумчане дорогие Такая проблема, когда ввожу массив в StringGrid он получается перевернутым, когда в Label тогда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru