powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Рисование прямоугольников
11 сообщений из 11, страница 1 из 1
Рисование прямоугольников
    #32650946
AnTT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача состоит в том, что программно нужно нарисовать i-количество прямоугольников разных цветов одинакового размера.

Кол-во может быть каким угодно

Вопрос: что в коде написать, чтобы при на нажатии кнопки эти прямоугольники появлялись на форме из пустоты.
...
Рейтинг: 0 / 0
Рисование прямоугольников
    #32650991
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Был бы отчет - было бы Line
А вот в форме :(
ИМХО
- либо делать заготовки и им только видимость менять
- либо API пользовать
...
Рейтинг: 0 / 0
Рисование прямоугольников
    #32651013
Фотография kedzo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а почему нельзя Надписи использовать?
...
Рейтинг: 0 / 0
Рисование прямоугольников
    #32651020
Фотография kedzo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потом элемент Прямоугольник есть.
Или я чего-то не понял?
...
Рейтинг: 0 / 0
Рисование прямоугольников
    #32651032
AnTT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хочется решить без API, так как я не знаю, что это такое и как это делать, хотя наверное не сложнее, чем сам Акс.

подскажите просто, как программно сделать новый объект Прамоугольник и поместить его на форму.
...
Рейтинг: 0 / 0
Рисование прямоугольников
    #32651070
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AnTTхочется решить без API, так как я не знаю, что это такое и как это делать, хотя наверное не сложнее, чем сам Акс.

подскажите просто, как программно сделать новый объект Прамоугольник и поместить его на форму.
1.
Новый контрол можно на форму только в режиме конструктора добавлять.
Т.е. вам придется програмно открыть форму в режиме конструктора, программно добавить контролы, сохранить форму и только потом открыть ее заного.
Такой вариант вас устроит?

Вариант 2:
На форме есть много "готовых" прямоугольничков (достаточное количество)
Они все невидимые
По нажатию на кнопку - делам некоторое количество прямоугольничков видимыми.

Вариант 3: Научиться рисовать прямоугольники через API функции (я бы не сказал, что пользоваться API тривиально :( )
...
Рейтинг: 0 / 0
Рисование прямоугольников
    #32651560
AnTT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paparome[quot AnTT]
Вариант 3: Научиться рисовать прямоугольники через API функции (я бы не сказал, что пользоваться API тривиально :( )

можете рассказать поподробнее про API - лучше выложить примерчик.

где почитать про это?

и что это вообще?
...
Рейтинг: 0 / 0
Рисование прямоугольников
    #32652093
AnTT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну всё-таки, господа.......
...
Рейтинг: 0 / 0
Рисование прямоугольников
    #32652202
IgorM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только учти, что все эти апишные прямоугольники нужно обновлять каждый раз, когда форма перерисовывается.

Код: plaintext
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.
Private Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
End Type

Private Const BLACK_BRUSH =  4 

Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
 (ByVal hWnd1 As Long, ByVal hWnd2 As Long, _
  ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Private Declare Function GetNextWindow Lib "user32" Alias "GetWindow" _
 (ByVal hwnd As Long, ByVal wFlag As Long) As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hDC As Long) As Long
Private Declare Function FrameRect Lib "user32" (ByVal hDC As Long, lpRect As RECT, ByVal hBrush As Long) As Long
Private Declare Function GetStockObject Lib "gdi32" (ByVal nIndex As Long) As Long

Private Sub Кнопка0_Click()
    Dim hDetailHWND As Long, hDC As Long, r As RECT, i As Long, hBrush As Long
    
    hDetailHWND = GetNextWindow(FindWindowEx(Me.hwnd,  0 , "OFormSub", vbNullString),  2 )
    hDC = GetDC(hDetailHWND)
    hBrush = GetStockObject(BLACK_BRUSH)
    
    r.Left =  0 : r.Top =  0 : r.Right =  50 : r.Bottom =  50 
    For i =  1  To  20 
        r.Left =  5  * i: r.Right =  5  * i +  50 
        r.Top =  5  * i: r.Bottom =  5  * i +  50 
        FrameRect hDC, r, hBrush
    Next
 
    ReleaseDC hDetailHWND, hDC
End Sub
...
Рейтинг: 0 / 0
Рисование прямоугольников
    #32652476
AnTT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorMТолько учти, что все эти апишные прямоугольники нужно обновлять каждый раз, когда форма перерисовывается.


спасибо, коллега.

что значит "нужно обновлять каждый раз"

и где почитать про API?
...
Рейтинг: 0 / 0
Рисование прямоугольников
    #32652481
AnTT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я понял, что значит "обновлять каждый раз"
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Рисование прямоугольников
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]