
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.52] |
![]() |
|
Сообщ.
#1
,
|
|
|
привет всем,
подскажите, плз, как инициализировать поле ввода в FrmCustomResponseAlert. Сразу заношу в буфер - не работает, перехватываю кнопку frmResponseCreate и заношу в строку - вылетает- говорит неправильный поинтер. Что-то еще можно сделать или только свою форму на ввод ? |
Сообщ.
#2
,
|
|
|
А инициализируешь примерно так?
![]() ![]() Char *entryStringBuf; FrmCustomResponseAlert(..., entryStringBuf, 32, NULL); |
Сообщ.
#3
,
|
|
|
инициализирую так
char arr[32] ; ::StrCopy( arr, pSelArticle->GetQUANTITY_TEMPString().CString() ) ; if ( ::FrmCustomResponseAlert( InputArticleQuantityAlert, art.CString(), price.CString(), max_quant.CString(), arr, 16, CheckResponse ) == 0 ) но не работает ![]() |
Сообщ.
#4
,
|
|
|
А с какой целью перед вызовом FrmCustomResponseAlert() ты в arr что-то копируешь? И почему размер буфера не совпадает?
Хотя это, наверное, не очень неважно. А если CheckResponse заменить н NULL, то что получается? |
Сообщ.
#5
,
|
|
|
У меня работает такой вариант:
![]() ![]() static Boolean RenameCallback(Int16 button, Char *attempt) { Boolean ok = true; if (button == frmResponseCreate) { // поиск поля ввода имени FormType *form = FrmGetActiveForm(); for (UInt16 i = 0, size = FrmGetNumberOfObjects(form); i < size; i++) { if (FrmGetObjectType(form, i) == frmFieldObj) { FieldType *field = (FieldType *)FrmGetObjectPtr(form, i); FieldAttrType attr; FldGetAttributes(field, &attr); if (attr.editable) { try { SetFieldText(field, name); } catch (...) {} break; } } } } else if (button == 0 && !*attempt) ok = false; return ok; } name протягивается через глобализм. SetFieldText устанавливает текст с помощью SetFieldHandle: ![]() ![]() void SetFieldText(FieldType *field, const String& str) { unsigned size = str.size() + 1; FieldAttrType attr; FldGetAttributes(field, &attr); if (attr.editable) { MemHandle handle = MemHandleNew(size); if (!handle) throw ESys(errNoMemory); char *text = (char *)MemHandleLock(handle); MemMove(text, str.c_str(), size); MemHandleUnlock(handle); SetFieldHandle(field, handle); } else { Char *text = (Char *)MemPtrNew(size); if (!text) throw ESys(errNoMemory); MemMove(text, str.c_str(), size); SetFieldPtr(field, text); } } |
Сообщ.
#6
,
|
|
|
спасибо andrufka, это сработает
![]() |