Добрый день) Ну во первых прикольная програмулена особенно новая версия. Правдо черный с белым и зеленым мне не оч нравится
Ну в общем у меня такая проблема.
У меня есть форма которая скрытая и работать с приложением можно только через ПопМеню в трее. Меню содержит
0 Добавить Сервер
1 Сервера
2 Выход
3 записать (это для себя потом уберу) И смысл в том что при нажатии на 0 открывается другая форма данные которых заносятся в кнопку которая будет СубМеню от меню 1
Тоесть
1 Сервера => 0 лллл
_____________1 пппп
_____________2 ррр
_____________3 ооо
и т.д.
Ну и в общем надо чтобы программа автоматически записывала № и кепшионы этих сабменюшек.
Я не прошу чтобы вы мне сделали все что я тут описал я это сам уже давно сделал но застрял на проверке.
В общем нужно чтобы пользователь немог ввести 2 одинаковых кепшиона тоесть как только он вводит то програма просматривает все сабменю а точнее их кепшионы и если такого кепшиона нет то добавляет кнопку если же есть тогда выдает сообщение.
Но тут и выходит проблемка.
Непойму как и почему но после нескольких проверок в файле появляется знак & тоесть
я жму добавить сервер и пишу к примеру Forum оно записывает в файл
0 Forum
После я еще раз пишу Forum и получаю ошибку что такое имя уже есть
Еще раз и тут оно само по себе добавляет эту кнопку я думаю КАК? смотрю в файл а там уже
0 &Forum
1 Forum
При чем кнопки выглядят идетично и писал я все одинаково при их создании(сабменю)
Если еще раз написать Forum то оно сново добавит кнопку а в файле будет
0 &Forum
1 F&orum
2 Forum
Почему оно так делает?? Из-за этой фигни я немогу дальше продолжать делать программу.
Добавлено (22.05.07, 11:08)
---------------------------------------------
Вот соурс.:
Это обработчик на той форме в которую вводятся данные на кнопку ДОБАВИТЬ
Code |
void __fastcall TForm2::Button1Click(TObject *Sender) { int h; for (h=0; h<=Form1->pm->Items->Items[1]->Count - 1; h++) if (AnsiUpperCase("&"+nameedit->Text) == AnsiUpperCase(Form1->pm->Items->Items[1]->Items[h]->Caption) || AnsiUpperCase("&"+nameedit->Text) == AnsiUpperCase("&" + Form1->pm->Items->Items[1]->Items[h]->Caption ) || AnsiUpperCase(nameedit->Text) == AnsiUpperCase("&" + Form1->pm->Items->Items[1]->Items[h]->Caption ) ) { MessageDlg("Извените, такое имя существует",mtWarning, TMsgDlgButtons() << mbOK, 0); nameedit->Text=""; loginedit->Text=""; portedit->Text=""; Form2->Close(); return; } TMenuItem *NewItem = new TMenuItem(Form1->pm); NewItem->Caption = Form2->nameedit->Text; Form1->pm->Items->Items[1]->Add(NewItem);
int i,j; String s,s2; FILE *fp; fp = fopen("MainMenu.mm","w"); for ( i=0; i<=Form1->pm->Items->Count - 1;i++) { s=Form1->pm->Items->Items[i]->Caption; fprintf(fp,"%d %s\n", i,s); } fclose(fp); FILE *fp2; fp2=fopen("SubMenu.sub","w"); for (j=0; j<=Form1->pm->Items->Items[1]->Count - 1; j++) { s2=Form1->pm->Items->Items[1]->Items[j]->Caption; fprintf(fp2,"%d %s\n", j,s2); } fclose(fp2); nameedit->Text=""; loginedit->Text=""; portedit->Text=""; Form2->Close(); |
Проверка немного странная но то я пробовал обойти эту фигню но после этого стала работать лучше но засылать & за первый и т.д. символы.
также сделал проверку по верхнему регистру чтобы небыло одинаковых имен но в разных регистрах.
Почему тот символ там появляется не имею понятия. И без помощи записи в файл Кепшионов это увидеть нельзя. Поэтому ориентируюсь только на файл. Файл SubMenu.sub Остальная часть кода думаю неважна поскольку там только настройки формы.
Добавлено (28.05.07, 07:47)
---------------------------------------------
Что никто не знает??