Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 04.05.2012
Сообщений: 14
1

Запрограммировать появление на форме кнопки и поля типа Memo

04.05.2012, 06:21. Показов 1769. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Запрограммировать появление на форме кнопки и поля типа Memo по выполнению команд меню, считывания в Memo и сохранения текстового файла.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.05.2012, 06:21
Ответы с готовыми решениями:

Экспорт поля типа memo в Excel
Доброй ночи. В базе есть поле memo в формате RTF. Стоит задача сделать экспорт в Excel с целью...

Заполнение поля типа Memo данными
Я создал BDE БД, но нигде не могу найти, как заполнить поля с типом Memo данными. При компиляции...

Отобразить содержимое поля типа MEMO в DBGrid'е
Доброго времени суток. Появилась у меня такая проблемка. С помощью builder стучусь на сервер...

На форме разместить две кнопки, список и поле Memo
На форме разместить две кнопки, список и поле Memo. В Memo занести произвольный текст, по нажатии...

12
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
04.05.2012, 06:36 2
Объясни понятней, а то как-то скомкано объяснил.
0
0 / 0 / 0
Регистрация: 04.05.2012
Сообщений: 14
04.05.2012, 08:07  [ТС] 3
Ассемблер под Windows. Нужно создать приложение, в котором нужно запрограммировать появление кнопки и поле Мемо (мне объясняли что это задается циклом который изменяет прозрачность элементов), и так чтобы по выполнению команд меню (Файл->Открыть;Файл->Сохранить) происходило считывание из текстового файла (.txt) в поле Мемо или его сохранения из Мемо. Помоги, пожалуйста, хотя бы без появления (чтобы они сразу там были).
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
04.05.2012, 08:41 4
Про появление - используй свойство AlphaBlend и там есть функции как раз выплывания. Чтение организуй потоком. Кстати, в асме нет компонента Memo, используется Edit, задается свойство ES_MultiLine. Элементы размещаются, как окно, только задаешь класс элемента.
0
0 / 0 / 0
Регистрация: 04.05.2012
Сообщений: 14
05.05.2012, 08:36  [ТС] 5
К сожалению я почти ничего не понимаю в ассемблере, собственно поэтому обратился на данный форум. Может мне кто-нибудь поможет? Нужен код программы. Пожалуйста.
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
05.05.2012, 13:09 6
Ниже исходник рабочей программы, которая выводит список, поле ввода, две кнопки и обрабатывает их:
Assembler
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
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
.486p
.model flat, stdcall
;option casemap:none 
;include Windows.inc
include toolhelp.inc
extrn GetModuleHandleA:PROC
extrn LoadIconA:PROC
extrn LoadCursorA:PROC
extrn RegisterClassA:PROC
extrn CreateWindowExA:PROC
extrn ShowWindow:PROC
extrn UpdateWindow:PROC
extrn GetMessageA:PROC
extrn TranslateMessage:PROC
extrn DispatchMessageA:PROC
extrn ExitProcess:PROC
extrn PostQuitMessage:PROC
extrn DefWindowProcA:PROC
;extrn Rectangle:PROC
extrn CreateSolidBrush:PROC
extrn GetTickCount:PROC
extrn SetWindowTextA:PROC
extrn SetTimer:PROC
extrn MoveWindow:PROC;
extrn KillTimer:PROC
extrn CreateEllipticRgn:PROC
extrn CreateRectRgn:PROC
extrn SetWindowRgn:PROC
extrn SendMessageA:PROC
extrn SetParent:PROC
extrn MessageBoxA:PROC
extrn GetWindowTextA:PROC
.data?
WNDCLASS struc
style dd 0
lpfnWndProc dd ?
cbClsExtra dd ?
cbWndExtra dd ?
hInstance dd ?
hIcon dd ?
hCursor dd ?
hbrBackground dd ?
lpszMenuName dd ?
lpszClassName dd ?
WNDCLASS ENDS
POINT struc
x dd ?
y dd ?
POINT ends
MONMSGSTRUCT struc
hwnd1 dd ?
message dd ?
wParam dd ?
lParam dd ?
time dd ?
pt POINT <>
MONMSGSTRUCT ends
.data 
newhwnd                        dd 0 
hInst                     dd 00000000h 
szTitleName         db 'This is my application on assembler',0 
smena db ' Eto moya programma na assemblere',0
szClassName       db 'ASMCLASS32',0 
 
msg                      MONMSGSTRUCT <>; структура сообщения 
wc                       WNDCLASS <>; структура класса 
left dd 0
Top dd 0
w dd 500h
h dd 2E0h
fon dd 17106443h
alfa db '23513',0
beta db '32515',0
;bhwnd dd 0
inputstring db 128 dup (0)
const1 dd 100
const2 dd 200
bhwnd dd 0
bhwnd1 dd 0
statichwnd dd 0
delheader dd 0
inputboxhwnd dd 0
statichwnd1 dd 0
.const
emptystr db 0,0
EditClass db 'EDIT',0
ButtonClass db 'BUTTON',0
Button1 db '>>',0;
Button2 db '<<',0
StaticClass db 'LISTBOX',0
StaticText db 'This programm possibles to input text to list with using two buttons',0
Staticinput db 'STATIC',0
StaticName db 'Эта программа позволяет заносить заносить в список и вытаскивать оттуда в и из поля ввода.',0
.code 
start: 
push 0
call GetModuleHandleA ; получаем hInstanse 
Mov hInst, eax 
 
Mov wc.style, 2+1+4000h;
     ; устанавливаем стиль окна 
Mov wc.lpfnWndProc, offset WndProcg ; 
Mov wc.cbClsExtra, 0 
Mov wc.cbWndExtra, 0 
Mov eax, hInst
Mov wc.hInstance, eax 
push offset alfa
push 0h
call LoadIconA; получаем значок приложения по 
         ; умолчанию 
Mov wc.hIcon, eax 
push offset beta
push 0
call LoadCursorA ; получаем курсор по умолчанию 
Mov wc.hCursor, eax 
mov EAX,00a3c9d3h;
push EAX
call CreateSolidBrush
Mov wc.hbrBackground, EAX
Mov dword ptr wc.lpszMenuName, 0 
Mov dword ptr wc.lpszClassName, offset szClassName ; задаём имя класса 
         ;окна 
push offset wc
call RegisterClassA ; регистрируем класс окна 
 
Push 0 
Push hInst ; дескриптор 
Push 0 
Push 0 
Push h ; высота 
Push w ; ширина 
Push 0h ; y 
Push 0h ; x 
Push 0CF0000h; стиль 
Push offset szTitleName ; заголовок окна 
Push offset szClassName ; имя класса 
Push 0 ; дополнительный стиль 
Call CreateWindowExA ; создаём окно 
 
 
 
mov newhwnd, eax ; сохраняем его дескриптор 
 
push 1
push newhwnd
call ShowWindow; показываем окно 
push newhwnd
call UpdateWindow; обновляем его 
push newhwnd
call UpdateWindow; обновляем его 
 
 
 
 
 
 
 
 
Call GetTickCount
msg_loop: ; запускаем цикл обработки сообщений 
push 0h
push 0h
push 0h
push offset msg
call GetMessageA
cmp ax, 0 
je end_loop 
push offset msg
call TranslateMessage
push offset msg
call DispatchMessageA
jmp msg_loop 
end_loop: 
push 0h
call ExitProcess
 
WndProcg proc hwnd:DWORD, wmsg:DWORD, wparam:DWORD, lparam:DWORD 
push ebx
push edi
push esi
cmp word ptr wmsg,0001h
je Form1Create
Cmp word ptr wmsg, 0002h
Je wmdestroy 
Cmp word ptr wmsg, 0100h
Je wmkeydown 
cmp word ptr wmsg,0204h
je wmchangetitle
;cmp word ptr wmsg,0207h
;je inittimer
cmp word ptr wmsg,0113h
je movpos
;cmp word ptr wmsg,0202h
;je setreg;
cmp word ptr wmsg,0111h
je message1
;cmp word ptr wmsg,000Fh
;jne defa
push lparam
push wparam
push wmsg
push hwnd
call DefWindowProcA
     ; вызываем стандартный обработчик сообщений Jmp finish 
wmkeydown: 
cmp wparam,13
jne prosk
push 0
push hwnd
call KillTimer
prosk:cmp wparam, 27 
je wmdestroy; 
cmp wparam, 70h
je wm_returnnormal
;если нажата клавиша Escape то выход 
jmp finish 
wmchangetitle: 
push offset smena
push hwnd
call SetWindowTextA
;если нажата клавиша Escape то выход 
jmp finish 
wm_returnnormal: 
push offset szTitleName
push hwnd
call SetWindowTextA
;если нажата клавиша Escape то выход 
jmp finish 
inittimer:
push 00000000h
push 000000C8h
push 00000000h
push hwnd
call SetTimer
jmp finish
movpos:
add left,1;0
add Top,1;0
push 1;1;
;push 200h
mov EAX,h
sub EAX,Top
sub EAX,Top
push EAX
;push 300h
mov EAX,w
sub EAX,left
sub EAX,left
push EAX
push Top 
push left
push hwnd
call MoveWindow
jmp finish
setreg:
push 00000000h
push 00000000h
push h
push w
call CreateEllipticRgn
push 1
push EAX
push hwnd
call SetWindowRgn
jmp finish
Form1Create:
Push 00000008h 
Push hInst ; дескриптор 
;mov eax,01110000h
push 0
Push hwnd 
Push 44;0000003Bh ; высота 
Push 75;0000004Bh ; ширина 
Push 45;0000000Ah ; y 
Push 200;0000000Ah ; x 
Push 00005000h; стиль  Push 000051E0h 00005004
Push offset Button1;00000000h;Push offset Button1;szTitleName ; заголовок окна 
Push offset ButtonClass;szClassName ; имя класса 
Push 0 ; дополнительный стиль 
Call CreateWindowExA ; создаём окно 
mov bhwnd,EAX
 
push hwnd
push bhwnd
call SetParent
 
push 1000;00000124h
push 1000;000000F9h
push 00000013h
push 00000000h
call CreateRectRgn
mov delheader,EAX
push 1
push EAX
push bhwnd
call SetWindowRgn
 
push 1
push bhwnd
call ShowWindow; показываем окно 
push bhwnd
call UpdateWindow; обновляем его 
push lparam
push wparam
push wmsg
push bhwnd
 
 
 
 
Push 00000008h 
Push hInst ; дескриптор 
Push 0h
Push hwnd 
Push 44;0000003Bh ; высота 
Push 75;0000004Bh ; ширина 
Push 90;0000000Ah ; y 
Push 200;0000000Ah ; x 
Push 00005000h; стиль  Push 000051E0h 00005004
Push offset Button2;00000000h;Push offset Button1;szTitleName ; заголовок окна 
Push offset ButtonClass;szClassName ; имя класса 
Push 0 ; дополнительный стиль 
Call CreateWindowExA ; создаём окно 
mov bhwnd1,EAX
 
push hwnd
push bhwnd1
call SetParent
 
 
push 1000;00000124h
push 1000;000000F9h
push 00000013h
push 00000000h
call CreateRectRgn
;mov EAX,delheader
push 1
push EAX
push bhwnd1
call SetWindowRgn
 
push 1
push bhwnd1
call ShowWindow; показываем окно 
;push bhwnd1
;call UpdateWindow; обновляем его 
 
 
Push 00000008h 
Push hInst ; дескриптор 
Push 0h
Push hwnd 
Push 201;0000003Bh ; высота 
Push 177;0000004Bh ; ширина 
Push 4;0000000Ah ; y 
Push 6;0000000Ah ; x 
Push 00000000h; стиль  Push 000051E0h 00005004
Push offset StaticText;00000000h;Push offset Button1;szTitleName ; заголовок окна 
Push offset StaticClass;szClassName ; имя класса 
Push 0 ; дополнительный стиль 
Call CreateWindowExA ; создаём окно 
mov statichwnd,EAX
 
push hwnd
push statichwnd
call SetParent
push 1000;00000124h
push 1000;000000F9h
push 00000013h
push 00000000h
call CreateRectRgn
push 1
mov delheader,eax
push eax
push statichwnd
call SetWindowRgn
push 1
push statichwnd
call ShowWindow; показываем окно 
 
 
 
 
Push 00000008h 
Push hInst ; дескриптор 
Push 0h
Push hwnd 
Push 182;0000003Bh ; высота 
Push 121;0000004Bh ; ширина 
Push 25;0000000Ah ; y 
Push 350;0000000Ah ; x 
Push 00000000h; стиль  Push 000051E0h 00005004
Push offset emptystr;00000000h;Push offset Button1;szTitleName ; заголовок окна 
Push offset EditClass;szClassName ; имя класса 
Push 0 ; дополнительный стиль 
Call CreateWindowExA ; создаём окно 
mov inputboxhwnd,EAX
 
push hwnd
push inputboxhwnd
call SetParent
;push 1000;00000124h
;push 1000;000000F9h
;push 00000013h
;push 00000000h
;call CreateRectRgn
;push 1
;mov ,eax
;push eax
;push inputboxhwnd
;call SetWindowRgn
push 1
push inputboxhwnd
call ShowWindow; показываем окно 
 
 
Push 00000008h 
Push hInst ; дескриптор 
Push 0h
Push hwnd 
Push 60;0000003Bh ; высота 
Push 450;0000004Bh ; ширина 
Push 200;0000000Ah ; y 
Push 4;0000000Ah ; x 
Push 00000000h; стиль  Push 000051E0h 00005004
Push offset StaticName;00000000h;Push offset Button1;szTitleName ; заголовок окна 
Push offset Staticinput;szClassName ; имя класса 
Push 0 ; дополнительный стиль 
Call CreateWindowExA ; создаём окно 
mov statichwnd1,EAX
 
push hwnd
push statichwnd1
call SetParent
push 1000;00000124h
push 1000;000000F9h
push 00000013h
push 00000000h
call CreateRectRgn
push 1
mov delheader,eax
push eax
push statichwnd1
call SetWindowRgn
push 1
push statichwnd1
call ShowWindow; показываем окно 
 
 
 
;push lparam
;push wparam
;push wmsg
;push bhwnd
jmp finish
 
message1:
mov eax,bhwnd1
cmp lparam, eax
jnz finish1
xor eax,eax
cmp wparam,0
jnz finish1
 
push 0000007Fh
push offset inputstring
push inputboxhwnd
call GetWindowTextA ;получаем значение из поля ввода
     push 0h 
 
     ;   push offset szClassName
     ;    push offset inputstring
    ;    push hwnd 
     ;    call MessageBoxA 
push 0
push 0
push 188h
push statichwnd
call SendMessageA; Get Selected Position of list box
push offset inputstring
inc eax
push eax;dword ptr 00000000h
push dword ptr 0181h
 
push statichwnd
call SendMessageA ;вставляем новую строку
push statichwnd
call UpdateWindow; обновляем его 
jmp finish
finish1:
mov eax,bhwnd
cmp lparam, eax
jnz finish
xor eax,eax
cmp wparam,0
jnz finish
 
push 0
push 0
push 188h
push statichwnd
call SendMessageA; Get Selected Position of list box
push eax
push offset inputstring
push eax
push 189h
push statichwnd
call SendMessageA; Get Text of Selected string
pop eax
push 0
push eax
push 182h
push statichwnd
call SendMessageA; Delete Selected String
push offset inputstring
push inputboxhwnd
call SetWindowTextA; SetTextToTheInputBox
jmp finish
;call DefWindowProcA
;jmp finish
pludraw:
;push offset paintstru
;push hwnd
;call BeginPaint
;push eax
;push hwnd
;call Paint_Proc
;push offset ps
;push hwnd
;call EndPaint
;jmp defa
wmdestroy:
push 0h 
call PostQuitMessage
push 0h
call ExitProcess ; выход 
finish:
pop ebx
pop edi
pop esi 
ret 
WndProcg endp 
end start
Никогда не оставляю комментарии к своим программам.
1
0 / 0 / 0
Регистрация: 04.05.2012
Сообщений: 14
07.05.2012, 11:21  [ТС] 7
то что вы скинули это файл .asm?
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
07.05.2012, 13:56 8
Да, это исходник. Кстати, рабочий. Видишь, каждый компонент - отдельное окно. У него надо заголовок убирать и задавать в Parent форму, чтобы юзер не мог его куда-нить утянуть. Кстати, на счет комментариев я погорячился.
1
0 / 0 / 0
Регистрация: 04.05.2012
Сообщений: 14
07.05.2012, 17:11  [ТС] 9
я загнал его в файл асм, создал батник, но почему-то он выдал ошибку. подскажи, пожалуйста
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
08.05.2012, 06:39 10
А какие ошибки он выдал? Покажи окно батника.
0
0 / 0 / 0
Регистрация: 04.05.2012
Сообщений: 14
11.05.2012, 15:39  [ТС] 11
Вот скрин.
Миниатюры
Запрограммировать появление на форме кнопки и поля типа Memo  
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
11.05.2012, 15:44 12
kiosab, не может открыть файл. Или имя не то, или файл открыт.
0
0 / 0 / 0
Регистрация: 04.05.2012
Сообщений: 14
11.05.2012, 15:48  [ТС] 13
Я не настолько не разбираюсь в ассемблере что не могу перевести.) Может быть библиотеки как-то коряво подключенны?
0
11.05.2012, 15:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2012, 15:48
Помогаю со студенческими работами здесь

Как связать поля типа record с компонентом memo
Cуть такова что мне нужно вводить данные в Memo: имя, фамилию, дату рождения в файл, причём они...

Ошибка при добавлении текстового поля в БД Access в поле типа MEMO
Приветствую всех! Помогите решить следующую проблему. Из формы добавляется запись из 2 полей...

Грид, умеющий показывать поля типа Memo как текст? Свободный?
Здравствуйте. У меня есть mysql таблица с полями размером 70 тысяч символов. Хочется уметь...

Запрограммировать появление контекстного меню
Запрограммировать на ассемблере появление контекстного (всплывающее) меню на форме по нажатию...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru