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

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

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

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

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

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

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

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

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

и что это вообще?
...
Рейтинг: 0 / 0
17.08.2004, 09:40:12
    #32652093
AnTT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рисование прямоугольников
ну всё-таки, господа.......
...
Рейтинг: 0 / 0
17.08.2004, 10:32:41
    #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
17.08.2004, 12:16:02
    #32652476
AnTT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рисование прямоугольников
IgorMТолько учти, что все эти апишные прямоугольники нужно обновлять каждый раз, когда форма перерисовывается.


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

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

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


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