Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
1 / 1 / 0
Регистрация: 22.10.2011
Сообщений: 18

Проблема с работой с несколькими формами

28.10.2011, 15:41. Показов 2318. Ответов 27

Студворк — интернет-сервис помощи студентам
Главное окно:
C++
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
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "MainForm.h"
#include "Playlist.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TForm2 *Form2;
//перемещение формы
bool dragging = false;
POINT MousePnt;
POINT point;
HWND hWnd;
RECT wndrect;
//Флаг для Play
bool fPlay = false;
//Флаг для Pause
bool fPause = false;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    Application->CreateForm(__classid(TForm2), &Form2);
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BXClick(TObject *Sender)
{
    Form1->Close();
}
//---Форма закрывается------------------------------------------------------------------------
void __fastcall TForm1::BXMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
    Form1->BX->Picture->LoadFromFile("x3.png");
}
//---Нажатое состояние кнопки X------------------------------------------------------------------------
void __fastcall TForm1::BXMouseMove(TObject *Sender, TShiftState Shift, int X, int Y)
 
{
    Form1->BX->Picture->LoadFromFile("x2.png");
}
//---Курсор над кнопкой X------------------------------------------------------------------------
void __fastcall TForm1::BXMouseLeave(TObject *Sender)
{
    Form1->BX->Picture->LoadFromFile("x.png");
}
//---Обычное состояние кнопки Х------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
    GetCursorPos(&MousePnt);
    dragging = true;
    SetCapture(hWnd);
}
//---Нажата ли мышь над формой------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift, int X,
          int Y)
{
    if (dragging == true)//если нажата кнопка, то...
    {
        //получить текущую позицию курсора
        GetCursorPos(&point);
        //Откорректировать положение окна
        Form1->Left = TForm1::Left+(point.x - MousePnt.x);
        Form1->Top = TForm1::Top+(point.y - MousePnt.y);
        Form2->Left = Form1->Left;
        Form2->Top = Form1->Top + Form1->Height;
    //Установить новые размеры окна
        //SetWindowPos(hWnd,NULL,wndrect.left,wndrect.top,0,0,SWP_NOZORDER | SWP_NOSIZE);
        MousePnt = point;
    }
}
//---Движение окна------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
    if (dragging == true)
    {
        dragging=false;
        ReleaseCapture();
        SendMessage(TForm1::Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
    }
}
//---Отпустить кнопку мыши (конец перемещения окна)------------------------------------------------------------------------
void __fastcall TForm1::BMinClick(TObject *Sender)
{
    Form1->WindowState = wsMinimized;
}
//---Окно сворачивается------------------------------------------------------------------------
void __fastcall TForm1::BMinMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
    Form1->BMin->Picture->LoadFromFile("_3.png");
}
//---Нажатое состояние кнопки BMin------------------------------------------------------------------------
void __fastcall TForm1::BMinMouseMove(TObject *Sender, TShiftState Shift, int X, int Y)
 
{
    Form1->BMin->Picture->LoadFromFile("_2.png");
}
//---Курсор над кнопкой BMin------------------------------------------------------------------------
 
void __fastcall TForm1::BMinMouseLeave(TObject *Sender)
{
    Form1->BMin->Picture->LoadFromFile("_.png");
}
//---Обычное состояние кнопки BMin------------------------------------------------------------------------
 
void __fastcall TForm1::BMinMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
    Form1->BMin->Picture->LoadFromFile("_.png");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BOClick(TObject *Sender)
{
    bool static flag = false;
    flag = !flag;
    if (flag)
    {
        Form1->FormStyle = fsStayOnTop;
        Form2->FormStyle = fsStayOnTop;
    }
    else
    {
        Form1->FormStyle = fsNormal;
        Form2->FormStyle = fsNormal;
    }
}
//---Поверх всех окон------------------------------------------------------------------------
void __fastcall TForm1::BOMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
    bool static flag = false;
    flag = !flag;
    if (flag)
    {
        Form1->BO->Picture->LoadFromFile("o2.png");
    }
    else
    {
        Form1->BO->Picture->LoadFromFile("o.png");
    }
}
//---Состояние кнопки "поверх всех окон"------------------------------------------------------------------------
void __fastcall TForm1::BOMouseLeave(TObject *Sender)
{
    if(Form1->FormStyle == fsNormal)
        Form1->BO->Picture->LoadFromFile("o.png");
}
//---Обычное состояние кнопки "Поверх всех окон"------------------------------------------------------------------------
void __fastcall TForm1::BOMouseMove(TObject *Sender, TShiftState Shift, int X, int Y)
 
{
    Form1->BO->Picture->LoadFromFile("o2.png");
}
//---Курсор над кнопкой Поверх всех окон------------------------------------------------------------------------
void __fastcall TForm1::PLClick(TObject *Sender)
{
    bool static flag = false;
    flag = !flag;
    Form2->Left = Form1->Left;
    Form2->Top = Form1->Top + Form1->Height;
    Form2->Visible = flag;
}
//---Открыть/закрыть плейлист------------------------------------------------------------------------
void __fastcall TForm1::PLMouseMove(TObject *Sender, TShiftState Shift, int X, int Y)
 
{
    Form1->PL->Picture->LoadFromFile("PL2.png");
}
//---Курсор над кнопкой PL------------------------------------------------------------------------
void __fastcall TForm1::PLMouseLeave(TObject *Sender)
{
    if(!Form2->Visible)
    {
        Form1->PL->Picture->LoadFromFile("PL.png");
    }
}
//---Обычное состояние кнопки PL------------------------------------------------------------------------
void __fastcall TForm1::PLMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
    if(Form2->Visible)
    {
        Form1->PL->Picture->LoadFromFile("PL2.png");
    }
    else
    {
        Form1->PL->Picture->LoadFromFile("PL.png");
    }
}
//---Нажатое состояние кнопки PL-----------------------------------------------------------------------//---Нажатое состояние кнопки "Back"------------------------------------------------------------------------//---Обычное состояние кнопки "Back"------------------------------------------------------------------------
void __fastcall TForm1::BBackMouseLeave(TObject *Sender)
{
    Form1->BBack->Picture->LoadFromFile("back.png");
}
//---Обычное соостояние кнопки "Back"------------------------------------------------------------------------
void __fastcall TForm1::BBackMouseMove(TObject *Sender, TShiftState Shift, int X,
          int Y)
{
    Form1->BBack->Picture->LoadFromFile("back2.png");
}
//---Курсор над кнопкой "Back"------------------------------------------------------------------------
 
void __fastcall TForm1::BPauseMouseLeave(TObject *Sender)
{
    if(!fPause)
        Form1->BPause->Picture->LoadFromFile("pause.png");
}
//---Обычное состояние кнопки "Pause"------------------------------------------------------------------------
 
void __fastcall TForm1::BPauseMouseMove(TObject *Sender, TShiftState Shift, int X,
          int Y)
{
    Form1->BPause->Picture->LoadFromFile("pause2.png");
}
//---Курсор над кнопкой "Pause"------------------------------------------------------------------------
 
void __fastcall TForm1::BPlayMouseLeave(TObject *Sender)
{
    if(!fPlay)
        Form1->BPlay->Picture->LoadFromFile("play.png");
}
//---Обычное состояние кнопки "Play"------------------------------------------------------------------------
 
void __fastcall TForm1::BPlayMouseMove(TObject *Sender, TShiftState Shift, int X,
          int Y)
{
    Form1->BPlay->Picture->LoadFromFile("play2.png");
}
//---Курсор над кнопкой "Play"------------------------------------------------------------------------
 
void __fastcall TForm1::BStopMouseLeave(TObject *Sender)
{
    Form1->BStop->Picture->LoadFromFile("stop.png");
}
//---Обычное состояние кнопки "Stop"------------------------------------------------------------------------
 
void __fastcall TForm1::BStopMouseMove(TObject *Sender, TShiftState Shift, int X,
          int Y)
{
    Form1->BStop->Picture->LoadFromFile("stop2.png");
}
//---Курсор над кнопкой "Stop"------------------------------------------------------------------------
 
void __fastcall TForm1::BFWDMouseLeave(TObject *Sender)
{
    Form1->BFWD->Picture->LoadFromFile("FWD.png");
}
//---Обычное состояние кнопки "FWD"------------------------------------------------------------------------
void __fastcall TForm1::BFWDMouseMove(TObject *Sender, TShiftState Shift, int X, int Y)
{
    Form1->BFWD->Picture->LoadFromFile("FWD2.png");
}
//---Курсор над кнопкой "FWD"------------------------------------------------------------------------
 
void __fastcall TForm1::BBackMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
    Form1->BPause->Picture->LoadFromFile("pause.png");
    fPause = false;
    fPlay = true;
    Form1->BPlay->Picture->LoadFromFile("play2.png");
    Form1->BBack->Top = Form1->BBack->Top + 2;
 
}
//---Кнопка Back нажата------------------------------------------------------------------------
 
void __fastcall TForm1::BBackMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
    Form1->BBack->Top = Form1->BBack->Top - 2;
}
//---Кнопка Back отпущена------------------------------------------------------------------------
 
void __fastcall TForm1::BPauseMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
    fPlay = false;
    fPause = true;
    Form1->BPause->Picture->LoadFromFile("pause2.png");
    Form1->BPlay->Picture->LoadFromFile("play.png");
    Form1->BPause->Top = Form1->BPause->Top + 2;
}
//---Кнопка Pause нажата------------------------------------------------------------------------
 
void __fastcall TForm1::BPauseMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
    Form1->BPause->Top = Form1->BPause->Top - 2;
}
//---Кнопка Pause отпущена------------------------------------------------------------------------
 
void __fastcall TForm1::BPlayMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
    fPlay = true;
    fPause = false;
    Form1->BPause->Picture->LoadFromFile("pause.png");
    Form1->BPlay->Picture->LoadFromFile("play2.png");
    Form1->BPlay->Top = Form1->BPlay->Top + 2;
}
//---Кнопка Play нажата------------------------------------------------------------------------
 
void __fastcall TForm1::BPlayMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
    Form1->BPlay->Top = Form1->BPlay->Top - 2;
}
//---Кнопка Play отпущена------------------------------------------------------------------------
 
void __fastcall TForm1::BStopMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
    fPause = false;
    Form1->BPause->Picture->LoadFromFile("pause.png");
    Form1->BPlay->Picture->LoadFromFile("play.png");
    Form1->BStop->Top = Form1->BStop->Top + 2;
}
//---Кнопка Stop нажата------------------------------------------------------------------------
 
void __fastcall TForm1::BStopMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
    Form1->BStop->Top = Form1->BStop->Top - 2;
}
//---Кнопка Stop отпущена------------------------------------------------------------------------
 
void __fastcall TForm1::BFWDMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
    Form1->BPause->Picture->LoadFromFile("pause.png");
    fPause = false;
    fPlay = true;
    Form1->BPlay->Picture->LoadFromFile("play2.png");
    Form1->BFWD->Top = Form1->BFWD->Top + 2;
}
//---Кнопка FWD нажата------------------------------------------------------------------------
 
void __fastcall TForm1::BFWDMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
    Form1->BFWD->Top = Form1->BFWD->Top - 2;
}
//---Кнопка FWD отпущена------------------------------------------------------------------------
 
 
void __fastcall TForm1::BPlayClick(TObject *Sender)
{
    Form1->MediaPlayer1->FileName = "hugh_laurie_-_buddy_boldens_blues.mp3";
    Form1->MediaPlayer1->Open();
    Form1->MediaPlayer1->Play();
}
//---Play file------------------------------------------------------------------------
Второе окно (плейлист плеера)
C++
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Playlist.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
    : TForm(Owner)
{
 
}
//---------------------------------------------------------------------------
void __fastcall TForm2::BPlusMouseMove(TObject *Sender, TShiftState Shift, int X,
          int Y)
{
   Form2->BPlus->Picture->LoadFromFile("+_pl2.png");
}
//---------------------------------------------------------------------------
 
void __fastcall TForm2::BPlusMouseLeave(TObject *Sender)
{
    Form2->BPlus->Picture->LoadFromFile("+_pl.png");
}
//---------------------------------------------------------------------------
 
void __fastcall TForm2::BPlusMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
    Form2->BPlus->Picture->LoadFromFile("+_pl3.png");
}
//---------------------------------------------------------------------------
Создаётся главная форма, при нажатии на кнопку "PL" открывается вторая форма.
При наведении на "кнопку" "BPlus" возникает ошибка:

Access violation at address 0040388C in module 'KKPlayer.exe'. Read of address 0000038C.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.10.2011, 15:41
Ответы с готовыми решениями:

Работа с несколькими формами
Допустим, у меня есть 2 формы.. в общем, 2 форма служит для автовыключения компьютера через заданное количество времени.. Необходимо, чтобы...

Работа с несколькими формами
Есть три формы: Form1(главная) Form2 Form3 Нужно чтобы Form2 появлялась и при нажатии кнопки на Form1 и на Form3. Как это...

Работа с несколькими формами
Как обратиться к элементам управления одной формы из другой формы?

27
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
28.10.2011, 16:52
и что? ну, не может он найти или открыть этот ваш странный _.png...
0
1 / 1 / 0
Регистрация: 22.10.2011
Сообщений: 18
28.10.2011, 16:57  [ТС]
LK, в MainForm находит же и отлично…
а во второй форме даже эти же картинки не находит…
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
28.10.2011, 17:17
в главном окне я ничего с "крестиком" не нашел (может, плохо искал) , попробуйте без крестика все это - +_*.png , для начала
0
1 / 1 / 0
Регистрация: 22.10.2011
Сообщений: 18
28.10.2011, 18:21  [ТС]
не в картинке проблема… а с самой формой что-то…
допустим я сделаю на второй форме кнопку TButton * Button1;
и на событие OnClick повешу обработчик:
Form2->Button1->Visible = false;
кнопка должна исчезнуть…
но возникает эта же ошибка…
а если сделать то же самое для Form1, всё работает нормально…
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
28.10.2011, 18:31
а обращение ко второй форме из первой работет нормально, типа этого :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::BOClick(TObject *Sender)
{
        bool static flag = false;
        flag = !flag;
        if (flag)
        {
                Form1->FormStyle = fsStayOnTop;
                Form2->FormStyle = fsStayOnTop;
        }
        else
        {
                Form1->FormStyle = fsNormal;
                Form2->FormStyle = fsNormal;
        }
}
?
0
1 / 1 / 0
Регистрация: 22.10.2011
Сообщений: 18
28.10.2011, 18:35  [ТС]
да… работает…
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
28.10.2011, 18:40
выложите проект для экспериментов
0
1 / 1 / 0
Регистрация: 22.10.2011
Сообщений: 18
28.10.2011, 20:10  [ТС]
Вот экспериментируйте))
Вложения
Тип файла: rar KKPlayer (Builder).rar (7.82 Мб, 17 просмотров)
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
28.10.2011, 20:53
ага, есть такое дело, и вы посмотрите, куда у меня кнопочки сбежали, может, им какие якоря указать надо ?
ну и само название, простите великодушно - "кака плеер" - звучит не очень гламурно, но это сугубо мое личное имхо и мои собственные маразмы

по теме - поэкспериментирую попозжее
Миниатюры
Проблема с работой с несколькими формами  
0
1 / 1 / 0
Регистрация: 22.10.2011
Сообщений: 18
28.10.2011, 21:26  [ТС]
Кнопочки сбежали, что-то новенькое... У названия свои причины, которые понятны узкому кругу лиц)
А что по поводу основной проблемы? Я имею в виду, покажите хоть направление, в каком мне двигаться...
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
28.10.2011, 21:37
не должно здесь
C++
1
2
3
4
5
void __fastcall TForm2::BPlusMouseMove(TObject *Sender, TShiftState Shift, int X,
          int Y)
{
  Form2->BPlus->Picture->LoadFromFile("+_pl2.png");
}
быть проблемы
попробуйте заменить обработчик на MouseEnter и посмотрите
также неизвестно , как вы вставляли имя файла - вводили с клавиатуры, или копировали имя в проводнике, попробуйте пошаманить с этим именем - может, там какой символ не совпадает, ну, и не нравится мне это +- в именах файлов, и все, мне нравится гламурное btnPlistMouseEnter.png, например , но это, опять же, мое личное, понятое после получения многисленных довольно болезненых шишек в подобных ситуациях , да, каждый предпочитает учиться на своих шишках
1
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
28.10.2011, 21:40
Может я не в теме, но почему в основном юните объявлена "Form2"?
2
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
28.10.2011, 21:43
Цитата Сообщение от DefineTrueFalse Посмотреть сообщение
почему в основном юните объявлена "Form2"?
гм... точно ... хотя на проблемы с кнопкой во второй форме это как бы влиятьне должно ...
1
1 / 1 / 0
Регистрация: 22.10.2011
Сообщений: 18
28.10.2011, 21:44  [ТС]
Чтоб при нажатии на кнопку на главном окне, открывалось и закрывалось второе окно. А также для функции перемещения окна.
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
28.10.2011, 21:48
Цитата Сообщение от Drony Посмотреть сообщение
Чтоб при нажатии на кнопку на главном окне, открывалось и закрывалось второе окно.
Тут 2 варианта, либо тебе нужно попробовать удалить эту строку и посмотреть, что получится, либо Builder явно что-то скрывает...
1
1 / 1 / 0
Регистрация: 22.10.2011
Сообщений: 18
28.10.2011, 21:54  [ТС]
Цитата Сообщение от DefineTrueFalse Посмотреть сообщение
Тут 2 варианта, либо тебе нужно попробовать удалить эту строку и посмотреть, что получится, либо Builder явно что-то скрывает...
Ёу, а если убрать объявление и всё, что связано с Form2 тогда работает))
И имя файла нормальное =)

Тогда возникает новая проблема... Как корректировать положение второго окна в реальном времени?
если я буду перемещать главное окно, плейлист будет стоять на месте... а мне нужно как бы "прицепить" его..
0
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
28.10.2011, 22:01
А в чем проблема то? В движениях мыши над Image1 вроде все прописано было.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
28.10.2011, 22:06
речь была о том, чтобы убрать TForm2 *Form2;
, достаточно #include "Playlist.h"
и вот это вызывает смутные сомнения:
C++
1
2
3
4
5
6
7
8
9
10
if (flag)
        {
                Form1->FormStyle = fsStayOnTop;
                Form2->FormStyle = fsStayOnTop;
        }
        else
        {
                Form1->FormStyle = fsNormal;
                Form2->FormStyle = fsNormal;
        }
ну, не могут две формы одновременно быть StayOnTop, может, как-нибудь так
C++
1
2
3
4
5
6
7
8
if (flag)
        {
                Form1->FormStyle = fsStayOnTop;
        }
        else
        {
                Form2->FormStyle = fsNormal;
        }
1
872 / 448 / 35
Регистрация: 25.10.2011
Сообщений: 910
28.10.2011, 22:09
Должно быть что-то вроде этого:
C++
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
//...
bool drag = false;
//...
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
   if (Button == mbLeft)
   {
      ReleaseCapture();
      Perform(WM_SYSCOMMAND,0xF012,0);
      drag = true;
   }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
   if (drag)
   {
      Form2->Left = Form1->Left;
      Form2->Top = Form1->Top + Form1->Height;
   }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
   drag = false;
}
//---------------------------------------------------------------------------
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.10.2011, 22:09
Помогаю со студенческими работами здесь

Приложение с несколькими формами
У меня такая проблема. В приложении три формы. Программа может сворачиваться в трей. Когда программа свёрнута, она выполняет...

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

Работа с несколькими формами
Я создал вторую форму. На первой форме, когда нажимаю кнопку, вторая форма открывается и там в Текстбоксе должно появится сообщение,...

Работа с несколькими формами
Есть две формы и класс, который присутствует в обеих. С первой формы(FormMain) вызывается вторая(FormRaz), в которой осуществляется запись...

Работа с несколькими формами
Думаю при наличии ответов в этой теме, после индексирования её поисковиками, она станет довольно полезной. По крайней мере я не смог...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru