Dr.CODE
|
|
« : 18-01-2010 17:30 » |
|
Доброго времени суток! Хочу задать вот какие вопросы:
1) Как в компоненте TRichEdit отключить звуковой сигнал, когда в пустом текстовом поле с помощью стрелок на клаве определяются, я так понимаю, границы заполненного или пустого поля??
2) Можно-ли как-нибудь отключить возможность удаления загруженного текста в TRichEdit'e с помощью клавиши BackSpace, тобишь проше говоря - как отключить клавишу BackSpace только для компонента TRichEdit??
|
|
|
Записан
|
Краткость - сестра таланта, некраткость - сам талант!
|
|
|
elenatt
Интересующийся
Offline
Пол:
|
|
« Ответ #1 : 19-01-2010 05:44 » |
|
2) void __fastcall TForm1::RichEdit1KeyDown(TObject *Sender, WORD &Key, TShiftState Shift) { if( Key == 8) Key='\0';
}
|
|
|
Записан
|
|
|
|
Dr.CODE
|
|
« Ответ #2 : 19-01-2010 13:05 » |
|
elenatt, спасибо большое! Первую проблему решил идентично: void __fastcall TForm1::RichEdit1KeyDown(TObject *Sender, WORD &Key, TShiftState Shift) {
if (Key == VK_LEFT) {
Key = '\0';
} else if (Key == VK_RIGHT) {
Key = '\0';
}
}
Тобишь просто отключил клавиши! Тогда возникает вопрос в дополнение к первому: А можно, не отключая клавишу(-и), отключить звуковой сигнал? Есть кто знает на него ответ или такого ответа нет?
|
|
|
Записан
|
Краткость - сестра таланта, некраткость - сам талант!
|
|
|
|
Dr.CODE
|
|
« Ответ #4 : 20-01-2010 13:05 » |
|
elenatt, спасибо! Очень ценю вашу помощь!
|
|
|
Записан
|
Краткость - сестра таланта, некраткость - сам талант!
|
|
|
Dr.CODE
|
|
« Ответ #5 : 21-01-2010 00:53 » |
|
Возникли ещё такие вопросы: Как подсчитать кол-во загруженный байт информации в компоненте? И что оптимальнее подсчитать: кол-во байт или строк, чтобы потом использовать эту информацию для проверки валидности открываемого файла?
|
|
|
Записан
|
Краткость - сестра таланта, некраткость - сам талант!
|
|
|
Dr.CODE
|
|
« Ответ #6 : 21-01-2010 01:32 » |
|
В дополнение хочу вот что сказать: int x_size;
x_size = My_Rich_Edit_1 -> Lines -> Count;
В проверке валидности файла сильно не поможет, поэтому хочется подсчитать количество символов в открытом файле, но причём выделить это в отдельный обработчик события. Т.е. чтобы пользователь мог проверить какой-то один загруженный файл некой базы данных. Кол-во символов я буду хранить для каждого отдельного файла прям в программе. Следовательно, я оставляю только один вопрос:Можно-ли средствами TRichEdit'а подсчитать кол-во символов в тексте загруженном из файла данных и как это лучше всего осуществить?
|
|
|
Записан
|
Краткость - сестра таланта, некраткость - сам талант!
|
|
|
RXL
|
|
« Ответ #7 : 21-01-2010 04:22 » |
|
Суммарный размер. Возможно речь об этом... int size = 0;
for (n = 0; n < My_Rich_Edit_1->Lines->Count; n++) size += My_Rich_Edit_1->Lines[n].Length();
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Dr.CODE
|
|
« Ответ #8 : 21-01-2010 05:31 » |
|
RXL, нет. Я глянул, для Lines не определены дополнительные св-ва и функции в данном контексте. Как это обойти, не имею понятия!? Update:Мало сплю, поэтому дописался. Извиняюсь. Но код всё равно не работает, вот ошибка: [BCC32 Error] Unit_1.cpp(136): E2316 'Length' is not a member of 'TStrings'
|
|
« Последнее редактирование: 21-01-2010 14:50 от Dr.CODE »
|
Записан
|
Краткость - сестра таланта, некраткость - сам талант!
|
|
|
Dr.CODE
|
|
« Ответ #9 : 21-01-2010 05:48 » |
|
В принципе, я думаю и о том, что можно используя строковую переменную подсчитать текущее кол-во байтов в тексте, но вспомнил, что есть Length. Попробовал, не получилось. Я не проверял, но думаю что в Builder'e 2009 такая штука бы прокатила, но возникает другой вопрос - что противопоставлено свойству - Length теперь. Должно же что-то быть? Или я что-то не учитываю?
|
|
|
Записан
|
Краткость - сестра таланта, некраткость - сам талант!
|
|
|
RXL
|
|
« Ответ #10 : 21-01-2010 07:14 » |
|
Dr.CODE, я тебя не понимаю совсем. Перечитай свои посты внимательно и поправь.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Dr.CODE
|
|
« Ответ #11 : 21-01-2010 14:53 » |
|
Dr.CODE, я тебя не понимаю совсем. Перечитай свои посты внимательно и поправь. Поправил.
|
|
|
Записан
|
Краткость - сестра таланта, некраткость - сам талант!
|
|
|
RXL
|
|
« Ответ #12 : 21-01-2010 22:48 » |
|
Вот именно, что дописался... Lines[n].Length()Внимательнее надо! И спи побольше
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Dr.CODE
|
|
« Ответ #13 : 22-01-2010 13:17 » |
|
RXL, вот как я решил сделать: int Validate_Text[ ] = {360}; // пока в памяти хранится кол-во символов из одного файла // но кол-во файлов, пусть даже будет расти не стремительно, // в итоге со временем придётся всё равно изменить алгоритм их валидации на более серьёзный // и этого пока достаточно
int n,x_size,mas_valid_size; bool Valid; String Str_Full_Text;
Valid = false; mas_valid_size = sizeof(Validate_Text);
Str_Full_Text = My_Rich_Edit_1 -> Text; x_size = Str_Full_Text.Length();
if (x_size != 0) {
for (int i = 0; i < mas_valid_size; i++) {
if (x_size == Validate_Text[i]) {
My_Status_Bar_1 -> Panels -> Items[0] -> Text = Str_Valid_Full; Valid = true;
}
}
if (!Valid) {
My_Status_Bar_1 -> Panels -> Items[0] -> Text = Str_Valid_Not;
}
} else MessageDlg("Файл данных не открыт!", mtInformation, TMsgDlgButtons() << mbOK, NULL);
Но сразу возник логичный вопрос: Как узнать максимольно возможный размер строки - Str_Full_Text, т.е. максимальное кол-во символов, которые можно поместить в неё без выделения дополнительной памяти? Что-то типа: MaxCharSize? Просто в Builder'e 2010 я похожего не нашёл..
|
|
« Последнее редактирование: 22-01-2010 18:45 от Dr.CODE »
|
Записан
|
Краткость - сестра таланта, некраткость - сам талант!
|
|
|
Dr.CODE
|
|
« Ответ #14 : 09-02-2010 18:12 » |
|
Возник животрепещущий вопрос! Можно-ли *.rtf файл считывать построчно и подгружать каждую считанную строку на поле компонента RichEdit? И если да, то как это можно быстро реализовать?
|
|
|
Записан
|
Краткость - сестра таланта, некраткость - сам талант!
|
|
|
RXL
|
|
« Ответ #15 : 10-02-2010 09:51 » |
|
Э... Не знаю как пацаны, а я не возражаю - считывай построчно (c) В чем проблема то? Ты проверил сперва, что TRichEdit такое допускает?
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
|