Вопрос: TextBox'ы | Добавлено: 14.06.05 14:11 |
Автор вопроса: ![]() |
Здравствуйте!
Какой функцией можно перебрать все текстбоксы на форме и узнать что в них написано? Хэндл формы есть. |
Ответы | Всего ответов: 22 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 271202919 Вопросов: 56 Ответов: 837 |
Профиль | Цитата | #1 | Добавлено: 14.06.05 14:41 |
Кстати меня тоже этот ? волновал, но это было давно и я решил эту проблему, че то там с EACH связано было. И еще помню что хендл мне не нужен был. |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 192496851 Вопросов: 75 Ответов: 3178 |
Профиль | Цитата | #2 | Добавлено: 14.06.05 21:32 |
Решил? Как?? |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client ICQ: 233286456 Вопросов: 34 Ответов: 5445 |
Web-сайт: Профиль | Цитата | #3 | Добавлено: 14.06.05 21:58 |
FindWindowEx OR EnumChildWindows... Если есть объект (форма), то For Each ... Next |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 224 Ответов: 3777 |
Web-сайт: Профиль | Цитата | #4 | Добавлено: 15.06.05 00:01 |
EnumChildWindows
Вот эта функция мне так нужна, а Эпплман про нёё ***** то есть непонятно изьястняется, про какой то нестандартный компонент втирает... как ей пользоваться то? то есть, могу я перечислить хендлы всего, что имеет хендл и лежит на моей форме? |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client ICQ: 233286456 Вопросов: 34 Ответов: 5445 |
Web-сайт: Профиль | Цитата | #5 | Добавлено: 15.06.05 00:49 |
угу, можешь...
В модуле пиши что-то такое BOOL CALLBACK EnumChildProc( HWND hwnd, // handle to child window LPARAM lParam // application-defined value ); вызывай и в качестве торого параметра - указатель на эту функцию... |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 224 Ответов: 3777 |
Web-сайт: Профиль | Цитата | #6 | Добавлено: 15.06.05 01:10 |
2 sne:
а чё писать внутри этой ф? и желательно на вб, а то я только сегодня начал си учить ![]() ..., AddressOf Фанкшн,... и он выдаёт, что неправлильно юзаю. я его вообще этот опратор в первый раз вижу ![]() |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client ICQ: 233286456 Вопросов: 34 Ответов: 5445 |
Web-сайт: Профиль | Цитата | #7 | Добавлено: 15.06.05 10:45 |
дык ты в модуль запихнул функция надеюсь ??
внутри писать код, те дается hwnd, что еще надо для счастья ![]() |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 224 Ответов: 3777 |
Web-сайт: Профиль | Цитата | #8 | Добавлено: 15.06.05 15:47 |
ээээ, она мне хвндешки детей пресылает туда что ли? |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 192496851 Вопросов: 75 Ответов: 3178 |
Профиль | Цитата | #9 | Добавлено: 15.06.05 20:54 |
А можно код, плиз? Я, конечно, все понимаю, но как это дело состыковать? |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() Вопросов: 25 Ответов: 149 |
Профиль | Цитата | #10 | Добавлено: 15.06.05 22:29 |
Попробуй...
Код модуля: Option Explicit
Private Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long Private Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long Public Counter As Integer Public TextBoxTxt() As String Dim hWin As Long, hParent As Long Function EnumWinProc(ByVal hwnd As Long, ByVal lParam As Long) As Long Dim c As Byte, t As Integer Dim sText As String Dim sClass As String sClass = Space$(128) c = GetClassName(hwnd, sClass, 128) If c > 0 Then sClass = Left$(sClass, c) If sClass Like "*TextBox*" Or sClass Like "*Edit*" Then sText = Space$(128) t = GetWindowText(hwnd, sText, 128) 'Çàíîñèì òåêñò â ìàññèâ ReDim Preserve TextBoxTxt(Counter) TextBoxTxt(Counter) = Left$(sText, t) Counter = Counter + 1 End If End If EnumWinProc = 1 End Function Public Function FindTextBoxes(hWndParent As Long) As Long hParent = hWndParent EnumChildWindows hParent, AddressOf EnumWinProc, 0& FindTextBoxes = 1 End Function Код формы: Private Sub Command1_Click()
Dim i As Integer FindTextBoxes Me.hwnd For i = 0 To Counter - 1 Form1.List1.AddItem TextBoxTxt(i) Next i End Sub |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #11 | Добавлено: 16.06.05 13:19 |
Про EACH - актуально в случае если форма своей программы. Тогда действительно хендл не нужен. Код будет наподобие этого
Private Sub EnumText() Dim Ctrl As Control For Each Ctrl In Me.Controls If TypeOf Ctrl Is TextBox Then MsgBox Ctrl.Text Next Ctrl End Sub |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 192496851 Вопросов: 75 Ответов: 3178 |
Профиль | Цитата | #12 | Добавлено: 16.06.05 15:41 |
Нет, форма не моего приложения. А так я бы и сам может быть допер. ![]() |
Номер ответа: 13 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #13 | Добавлено: 16.06.05 16:21 |
В таком случае хочу сделать небольшой комментарий к коду SyavX'а
If the target window is owned by the current process, GetWindowText causes a WM_GETTEXT message to be sent to the specified window or control. If the target window is owned by another process and has a caption, GetWindowText retrieves the window caption text. If the window does not have a caption, the return value is a null string. This behavior is by design. It allows applications to call GetWindowText without hanging if the process that owns the target window is hung. However, if the target window is hung and it belongs to the calling application, GetWindowText will hang the calling application. To retrieve the text of a control in another process, send a WM_GETTEXT message directly instead of calling GetWindowText. Надеюсь, переводить не нужно? |
Номер ответа: 14 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 224 Ответов: 3777 |
Web-сайт: Профиль | Цитата | #14 | Добавлено: 16.06.05 19:11 |
2 SyavX
Классный код блин! прикольно видеть слова типа like в программировании |
Номер ответа: 15 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 192496851 Вопросов: 75 Ответов: 3178 |
Профиль | Цитата | #15 | Добавлено: 16.06.05 22:11 |
Like это типа '=' ? |
|