Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка понятная, но как исправить? 
V
    Опции темы
Nic442
  Дата 30.4.2006, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 5.4.2006
Где: Советский Союз

Репутация: нет
Всего: нет



Вопрос довольно легкий, но я чего-то не досоображаю.

Код

procedure TIndex_Form.Reopen1_files(Sender: TObject);
var
   NewItem: TMenuItem;
   str:string;
begin
   NewItem:=(Sender as TMenuItem);
   //MessageDlg('1',mtWarning,[mbOk],0);    Но если я здесь ставлю вывод сообщения то работает нормально.
   Reopen1.Delete(Reopen1.IndexOf(Sender as TMenuItem));  // ОШИБКА
   Reopen1.Insert(0,NewItem);
   str:=StringReplace((Sender as TMenuItem).Caption,'&','',[rfReplaceAll]);
   File_Reopen(NIL, str);
end;


Этот код висит у меня на одной из кнопок mainmenu. Повесил его на Toolbar на одну из Toolbutton в свойство MenuItem. Так при щелчке на этом button и выборе пункта меню он выдаёт ошибку. (Хотя из mainmenu нормально работает). Я проверил Reopen1.IndexOf(Sender as TMenuItem)=-1 при вызове через Toolbar. Но весь прикол в том что если я добавляю MessageDlg('1',mtWarning,[mbOk],0); то все работает. Подскажите, пожалуйста, как исправить ошибку. 
PM MAIL   Вверх
seer
Дата 30.4.2006, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 25.4.2006

Репутация: нет
Всего: нет



первое, что напрашивается.. это поставить задержку.. но это непонашенски..
Давай кидай более полную картину. А вообще у меня было нечто такое... в программе память зас%%л и проги выделывали странные штуки. Маловероятно, но бытьтакое может. 
PM MAIL   Вверх
Nic442
Дата 30.4.2006, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 5.4.2006
Где: Советский Союз

Репутация: нет
Всего: нет



Я то кину. Но ошибка то точно в том коде который я написал сверху. Я даже знаю почему, но как исправить??? 
Ведь Reopen1.IndexOf(Sender as TMenuItem)=-1 А он не может удалить несуществующий пункт меню (Reopen1.Delete[-1]) Но как только я ставлю сообщение, то даже пр -1 всё делает правильно.


Код

procedure TIndex_Form.Reopen1_files(Sender: TObject);
var
   NewItem: TMenuItem;
   str:string;
begin
   NewItem:=(Sender as TMenuItem);
   MessageDlg('1',mtWarning,[mbOk],0);
   Reopen1.Delete(Reopen1.IndexOf(Sender as TMenuItem));
   Reopen1.Insert(0,NewItem);
   str:=StringReplace((Sender as TMenuItem).Caption,'&','',[rfReplaceAll]);
   File_Reopen(NIL, str);
end;

procedure TIndex_Form.File_Reopen(Sender: TObject; openfile: string);
var
   stroka: ShortString;
begin
try
  if tab_text1.PageCount<=199 then begin
    Screen.Cursor:= crHourGlass;
    File_NewExecute(File_Open);
    text_GL[tab_text1.ActivePageIndex].Lines.LoadFromFile(openfile);
    stroka:='';
    stroka:=ExtractFileName(openfile);
    if Length(stroka)>=22 then
       stroka:=copy(stroka, 1, 20)+'..'+ExtractFileExt(stroka);
    tab_text1.ActivePage.Caption:=stroka;
    text_GL[tab_text1.ActivePageIndex].Modified:=false;
    file_names.Items.Add(IntToStr(tab_text1.PageCount)+': '+openfile);
    file_names.ItemIndex:=tab_text1.PageCount-1;
    text_GL[tab_text1.ActivePageIndex].hint :='Дата обновления: '
                     +DateTimeToStr(FileDateToDateTime(FileAge(openfile)));
    tab_text1.ActivePage.ImageIndex:=1;
  end else
    MessageDlg('Ошибка! Нельзя одновременно открыть больше 200 окон.'+#10#13
               +'Закройте одно из окон и повторите попытку.',mtError, [mbOK],0);
except
     file_names.Items.Delete(tab_text1.PageCount);
     tab_text1.ActivePage.free;
     i:=i-1;
     MessageDlg('Ошибка при открытия файла "'+openfile+'".',mtError, [mbOK],0);
end; {try .. except}
Screen.Cursor:= crDefault;
Timer_textTimer(OpenDialog);

end;
 
PM MAIL   Вверх
Sunvas
Дата 30.4.2006, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Цитата(Nic442 @  30.4.2006,  00:19 Найти цитируемый пост)
 Reopen1.Delete(Reopen1.IndexOf(Sender as TMenuItem));  // ОШИБКА

Нужно так
Код

if (Sender is TMenuItem) then Reopen1.Delete(Reopen1.IndexOf(Sender as TMenuItem));


Цитата(Nic442 @  30.4.2006,  00:19 Найти цитируемый пост)
Но весь прикол в том что если я добавляю MessageDlg('1',mtWarning,[mbOk],0);

Че-то я не совесем понял - куда добавишь?? 


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Nic442
Дата 30.4.2006, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 5.4.2006
Где: Советский Союз

Репутация: нет
Всего: нет



Sunvas, В коде на самом верху закоментарено куда,,, 

Ошибка не исправилась :-( 

Это сообщение отредактировал(а) Nic442 - 30.4.2006, 00:56
PM MAIL   Вверх
Sunvas
Дата 30.4.2006, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Цитата(Nic442 @  30.4.2006,  00:52 Найти цитируемый пост)
Sunvas, В коде на самом верху закоментарено куда,,, 

Да. Не увидел..
Ну а с моим кодом-то работает? 


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Nic442
Дата 30.4.2006, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 5.4.2006
Где: Советский Союз

Репутация: нет
Всего: нет



Не, тоже самое. Вообще непонятно.
Ошибка не исправилась :-( 
 
PM MAIL   Вверх
Sunvas
Дата 30.4.2006, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Цитата(Nic442 @  30.4.2006,  00:44 Найти цитируемый пост)
едь Reopen1.IndexOf(Sender as TMenuItem)=-1 А он не может удалить несуществующий пункт меню (Reopen1.Delete[-1])

Ну так проверяй - если не равен -1 то удаляй.

Цитата(Nic442 @  30.4.2006,  00:44 Найти цитируемый пост)
Но как только я ставлю сообщение, то даже пр -1 всё делает правильно.

Видать глюк какой-то.. 


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Nic442
Дата 30.4.2006, 01:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 5.4.2006
Где: Советский Союз

Репутация: нет
Всего: нет



Код

Ну так проверяй - если не равен -1 то удаляй. 

Не могу, иначе кнопка в баре будет не нужна.
Так дело в том что -1 идёт от ToolButton при нажатии на Toolbutton на любом пункте выдвигающегося меню. 
PM MAIL   Вверх
Демо
Дата 30.4.2006, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Что такое Reopen1? 


--------------------
    
PM MAIL ICQ Skype   Вверх
Nic442
Дата 30.4.2006, 01:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 5.4.2006
Где: Советский Союз

Репутация: нет
Всего: нет



Файл-->Reopen1-->NewItem
Reopen1 находится в меню, и включает в себя  Items 
PM MAIL   Вверх
Демо
Дата 30.4.2006, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Выполни вот это и исходи из того, что Sendere у тебя не TMenuItem:

Код

procedure TIndex_Form.Reopen1_files(Sender: TObject);    
var    
   NewItem: TMenuItem;    
   str:string;    
begin
  ShowMessage(Sender.ClassName);
 


--------------------
    
PM MAIL ICQ Skype   Вверх
Sunvas
Дата 30.4.2006, 01:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Знаешь Nic442, я думаю это 1 из реальных глюков Борланда.. Попробуй другие компоненты поиспользовать или пойти другим путем..

ЗЫ. У меня даже банальный текст 
Код

showmessage(inttostr(n1.IndexOf(n2)));

на тулбаттоне показывает -1.

Добавлено @ 01:56 
Цитата(Демо @  30.4.2006,  01:47 Найти цитируемый пост)
Выполни вот это и исходи из того, что Sendere у тебя не TMenuItem:

Да нет! Именно Tmenuitem!

Цитата(Демо @  30.4.2006,  01:47 Найти цитируемый пост)
ShowMessage(Sender.ClassName);

Зачем это smile  


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Nic442
Дата 30.4.2006, 02:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 5.4.2006
Где: Советский Союз

Репутация: нет
Всего: нет



ShowMessage(Sender.ClassName);

Имя класса я тоже решил поглядеть. При нажатии на ToolButton и выборе у него пункта меню выдаёт TMenuItem

Добавлено @ 02:07 
Я думаю такая фигня происходит. При нажатии на ToolButton и выборе у него пункта меню. Он посылает какое-то сообщение в меню. Но индекс остаётся -1  

Это сообщение отредактировал(а) Nic442 - 30.4.2006, 02:03
PM MAIL   Вверх
Sunvas
Дата 30.4.2006, 02:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Цитата(Nic442 @  30.4.2006,  02:00 Найти цитируемый пост)
Я думаю такая фигня происходит. При нажатии на ToolButton и выборе у него пункта меню. Он посылает какое-то сообщение в меню. Но индекс остаётся -1  

Токо меню ведь одно и тоже самое! Я проверял. 


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Демо
Дата 30.4.2006, 02:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Nic442
Ничего не понятно - как у тебя организовано. 

понял, чего ты навесил... 

Это сообщение отредактировал(а) Демо - 30.4.2006, 02:17


--------------------
    
PM MAIL ICQ Skype   Вверх
Nic442
Дата 30.4.2006, 02:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 5.4.2006
Где: Советский Союз

Репутация: нет
Всего: нет



Объясняю: При открытии файла в Reopen1 добавляется путь к нему. При открытии его через Reopen1 этот пункт становится на первое место(удаляется со своего места и становится в на первое).
Код

procedure TIndex_Form.Reopen1_files(Sender: TObject);
var
   NewItem: TMenuItem;
   str:string;
begin
   NewItem:=(Sender as TMenuItem);
   ShowMessage(Sender.ClassName);
   Reopen1.Delete(Reopen1.IndexOf(Sender as TMenuItem));
   Reopen1.Insert(0,NewItem);
   str:=StringReplace((Sender as TMenuItem).Caption,'&','',[rfReplaceAll]);
   File_Reopen(NIL, str);
end;

procedure TIndex_Form.File_Reopen(Sender: TObject; openfile: string);
var
   stroka: ShortString;
begin
try
  if tab_text1.PageCount<=199 then begin
    Screen.Cursor:= crHourGlass;
    File_NewExecute(File_Open);
    text_GL[tab_text1.ActivePageIndex].Lines.LoadFromFile(openfile);
    stroka:='';
    stroka:=ExtractFileName(openfile);
    if Length(stroka)>=22 then
       stroka:=copy(stroka, 1, 20)+'..'+ExtractFileExt(stroka);
    tab_text1.ActivePage.Caption:=stroka;
    text_GL[tab_text1.ActivePageIndex].Modified:=false;
    file_names.Items.Add(IntToStr(tab_text1.PageCount)+': '+openfile);
    file_names.ItemIndex:=tab_text1.PageCount-1;
    text_GL[tab_text1.ActivePageIndex].hint :='Дата обновления: '
                     +DateTimeToStr(FileDateToDateTime(FileAge(openfile)));
    tab_text1.ActivePage.ImageIndex:=1;
  end else
    MessageDlg('Ошибка! Нельзя одновременно открыть больше 200 окон.'+#10#13
               +'Закройте одно из окон и повторите попытку.',mtError, [mbOK],0);
except
     file_names.Items.Delete(tab_text1.PageCount);
     tab_text1.ActivePage.free;
     i:=i-1;
     MessageDlg('Ошибка при открытия файла "'+openfile+'".',mtError, [mbOK],0);
end; {try .. except}
Screen.Cursor:= crDefault;
Timer_textTimer(OpenDialog);

end;

procedure TIndex_Form.File_OpenExecute(Sender: TObject);      // Открыть
var
   c, vsego: byte;
   stroka, str: ShortString;
   NewItem: TMenuItem;
   col, l, FileHandle:integer;
begin
  if OpenDialog.Execute then begin
     if FileExists(OpenDialog.FileName)=false then begin
        FileHandle:=FileCreate(OpenDialog.FileName);
        FileClose(FileHandle);
     end;
     col:=OpenDialog.Files.Count;

     for l:=0 to (col-1) do begin
        try
           if tab_text1.PageCount<=199 then begin
              Screen.Cursor:= crHourGlass;
              File_NewExecute(File_Open);
              text_GL[tab_text1.ActivePageIndex].Lines.LoadFromFile(OpenDialog.Files[l]);
              stroka:='';
              stroka:=ExtractFileName(OpenDialog.Files[l]);
              if Length(stroka)>=22 then
                stroka:=copy(stroka, 1, 20)+'..'+ExtractFileExt(stroka);
              tab_text1.ActivePage.Caption:=stroka;
              text_GL[tab_text1.ActivePageIndex].Modified:=false;
              file_names.Items.Add(IntToStr(tab_text1.PageCount)+': '+OpenDialog.Files[l]);
              file_names.ItemIndex:=tab_text1.PageCount-1;
              text_GL[tab_text1.ActivePageIndex].hint :='Дата обновления: '
                 +DateTimeToStr(FileDateToDateTime(FileAge(OpenDialog.Files[l])));
              tab_text1.ActivePage.ImageIndex:=1;

              vsego := Reopen1.Count-1;
              for vsego := vsego downto 0 do begin
                 str:=StringReplace(Reopen1.items[vsego].Caption,'&','',[rfReplaceAll]);
                 if OpenDialog.Files[l] = str then begin
                    NewItem:=Reopen1.Items[vsego];
                    Reopen1.Delete(vsego);
                    Reopen1.Insert(0,NewItem);
                    break;
                 end;
              end;
              if OpenDialog.Files[l]<>str then begin
                 if Reopen1.Count=12 then Reopen1.Delete(11);
                 if Reopen1.Count<=11 then begin
                    NewItem := TMenuItem.Create(Reopen1);
                    NewItem.Caption := OpenDialog.Files[l];
                    Reopen1.Insert(0,NewItem);
                    Reopen1.Items[c].OnClick:=Reopen1_files;
                 end;
              end;
           end
           else
               MessageDlg('Ошибка! Нельзя одновременно открыть больше 200 окон.'
                           +#10#13+'Закройте одно из окон и повторите попытку.',
                          mtError, [mbOK],0);
        except
             file_names.Items.Delete(tab_text1.PageCount);
              tab_text1.ActivePage.free;
              i:=i-1;
              MessageDlg('Ошибка при открытия файла "'+OpenDialog.Files[l]+'".'
                         ,mtInformation, [mbOK],0);
        end;
    end;
  end;
  Screen.Cursor:= crDefault;
  Timer_textTimer(OpenDialog);
end;
 
PM MAIL   Вверх
Демо
Дата 30.4.2006, 02:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Вот такой код у меня возвращает не -1:

Код

procedure TForm1.ToolButton1Click(Sender: TObject);
var
  NewItem: TMenuItem;
begin
  NewItem:=(Sender as TMenuItem);
  ShowMessage(IntToStr(N21.IndexOf(Sender as TMenuItem)));


Похоже, что без конкретных данных не разобрать, что происходит... 


--------------------
    
PM MAIL ICQ Skype   Вверх
Sunvas
Дата 30.4.2006, 02:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Демо, вот смотри:
1. Бросаешь на форму tmainmenu и ttoolbar
2. В tmainmenu создаешь 2 tmenuitem (воторое - субменю первого) - n1 и n2, а на toolbar-e создаешь кнопочку.
3. В свойсте кнопки tmenuitem ставишь n1
4. В онклике n2 пишешь
Код

showmessage(inttostr(n1.IndexOf(n2)));


Теперь парадокс - если мы кликаем по n2 с меню то получаем сообщение 0, а если с кнопки, то сообщение -1.. 


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Nic442
Дата 30.4.2006, 02:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 5.4.2006
Где: Советский Союз

Репутация: нет
Всего: нет



N21 Включает в себя подпункты??
Теперь совсем непонятно становится.... 
PM MAIL   Вверх
Sunvas
Дата 30.4.2006, 02:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Цитата(Демо @  30.4.2006,  02:22 Найти цитируемый пост)
ToolButton1Click

а нужно Reopen1Click или, как у меня n2click 


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Nic442
Дата 30.4.2006, 02:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 5.4.2006
Где: Советский Союз

Репутация: нет
Всего: нет



Еще раз как у меня

Код

Reopen1.Items[c].OnClick:=Reopen1_files;
..............

procedure TIndex_Form.Reopen1_files(Sender: TObject);    
var    
   NewItem: TMenuItem;    
   str:string;    
begin    
   NewItem:=(Sender as TMenuItem);    
   Reopen1.Delete(Reopen1.IndexOf(Sender as TMenuItem));    
   Reopen1.Insert(0,NewItem);    
   str:=StringReplace((Sender as TMenuItem).Caption,'&','',[rfReplaceAll]);    
   File_Reopen(NIL, str);    
end;

 
PM MAIL   Вверх
Демо
Дата 30.4.2006, 02:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Вот проект, который именно так себя и ведет, как я написал: 

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  submenu.zi_ 3,48 Kb


--------------------
    
PM MAIL ICQ Skype   Вверх
Sunvas
Дата 30.4.2006, 02:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Цитата(Nic442 @  30.4.2006,  02:26 Найти цитируемый пост)
N21 Включает в себя подпункты??
Теперь совсем непонятно становится.... 


Вот проект для понятливости: 

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  nn.zip 3,54 Kb


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Демо
Дата 30.4.2006, 02:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(Sunvas @  30.4.2006,  02:28 Найти цитируемый пост)
а нужно Reopen1Click или, как у меня n2click 


Это только название осталось такое. 


--------------------
    
PM MAIL ICQ Skype   Вверх
Sunvas
Дата 30.4.2006, 02:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Демо, посмотри, чего мой реализ не работает 


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Демо
Дата 30.4.2006, 02:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Вопрос дополнительно:
На ToolButton навешено меню с подменю, или же только один пункт меню


--------------------
    
PM MAIL ICQ Skype   Вверх
Nic442
Дата 30.4.2006, 02:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 5.4.2006
Где: Советский Союз

Репутация: нет
Всего: нет



Чего-то не кочаются примеры... 
PM MAIL   Вверх
Демо
Дата 30.4.2006, 02:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(Sunvas @  30.4.2006,  02:42 Найти цитируемый пост)
посмотри, чего мой реализ не работает 


По разному навешены пункты меню, и связка не та, что нужно. По поводу уточнения вот автор скажет  - посмотрим... 


--------------------
    
PM MAIL ICQ Skype   Вверх
Sunvas
Дата 30.4.2006, 02:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Цитата(Демо @  30.4.2006,  02:43 Найти цитируемый пост)
На ToolButton навешено меню с подменю, или же только один пункт меню?


Цитата(Демо @  30.4.2006,  02:43 Найти цитируемый пост)
один пункт меню

 


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Nic442
Дата 30.4.2006, 02:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 5.4.2006
Где: Советский Союз

Репутация: нет
Всего: нет



РИСУЮ

ФАЙЛ--> REOPEN1--> ЕГО ПОДМЕНЮ
                                           |
TOLLBUTTON--------->Показывается подменю 
PM MAIL   Вверх
Демо
Дата 30.4.2006, 02:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(Sunvas @  30.4.2006,  02:45 Найти цитируемый пост)
один пункт меню


Тогда понятно.

Вот возьми обратно исправленный проект:

Добавлено @ 02:48 
Цитата(Nic442 @  30.4.2006,  02:47 Найти цитируемый пост)
TOLLBUTTON--------->Показывается подменю 


Ясно, у тебя другая ситуация. Минут через 5 попробую решить такую же задачку. 

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  nn.zip 3,27 Kb


--------------------
    
PM MAIL ICQ Skype   Вверх
Sunvas
Дата 30.4.2006, 02:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Цитата(Nic442 @  30.4.2006,  02:47 Найти цитируемый пост)
РИСУЮ

Ясно, ясно! У меня просто и ща мозги кипят от чего же так..

Добавлено @ 02:50 
Цитата(Nic442 @  30.4.2006,  02:44 Найти цитируемый пост)
Чего-то не кочаются примеры... 

а ты правой кнопкой мыши и "сохранить объект как.."

Цитата(Демо @  30.4.2006,  02:45 Найти цитируемый пост)
По разному навешены пункты меню, и связка не та, что нужно.

Сможешь исправить?

Добавлено @ 02:53 
Демо, в моем коде добавить onclick это немного не то... 


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Nic442
Дата 30.4.2006, 03:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 5.4.2006
Где: Советский Союз

Репутация: нет
Всего: нет



Да вот  
Да это я файл хотел прикрепить. Чего-то не прикрепился. 
Но в общем так как у тебя только при нажатии на toolbutton показывается submenu1 и   submenu2 

Это сообщение отредактировал(а) Nic442 - 30.4.2006, 03:06
PM MAIL   Вверх
Sunvas
Дата 30.4.2006, 03:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Цитата(Nic442 @  30.4.2006,  03:02 Найти цитируемый пост)
Да вот  

Это к чему? 


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Демо
Дата 30.4.2006, 03:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Nic442
У тебя OnClick на подпункты меню навешен?

Добавлено @ 03:10 
Уже понял.. 


--------------------
    
PM MAIL ICQ Skype   Вверх
Nic442
Дата 30.4.2006, 03:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 5.4.2006
Где: Советский Союз

Репутация: нет
Всего: нет



Конечно, ведь они через меню работают.

Reopen1.Items[c].OnClick:=Reopen1_files;
 
PM MAIL   Вверх
Sunvas
Дата 30.4.2006, 03:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Цитата(Nic442 @  30.4.2006,  03:02 Найти цитируемый пост)
Но в общем так как у тебя только при нажатии на toolbutton показывается submenu1 и   submenu2

Но мой глюк так и остался глюком.. 


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Nic442
Дата 30.4.2006, 03:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 5.4.2006
Где: Советский Союз

Репутация: нет
Всего: нет



Да и глюк такой же.  smile 
Я ещё пробовал через Toolbutton.MenuItem.IndexOf..... Но так тоже не катит

Добавлено @ 03:23 
Демо  Так попробовал или как?? Какие результаты? 
PM MAIL   Вверх
Демо
Дата 30.4.2006, 03:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Вот работающий вариант на OnClick:
Неохота разбираться, глюк это Delphi или так и должно работать...

Код

var
  m: TMenuItem;
begin
  m := Sender as TMenuItem;
  showmessage(inttostr(m.Parent.IndexOf(m)));
 


--------------------
    
PM MAIL ICQ Skype   Вверх
Nic442
Дата 30.4.2006, 03:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 5.4.2006
Где: Советский Союз

Репутация: нет
Всего: нет



Можешь написать работающий вариант, чтобы он удалял пункт и всталял в начало без message 
PM MAIL   Вверх
Демо
Дата 30.4.2006, 03:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(Nic442 @  30.4.2006,  03:34 Найти цитируемый пост)
Можешь написать работающий вариант, чтобы он удалял пункт и всталял в начало без message 

Так сейчас IndexOf не -1 возвращает...

Добавлено @ 03:39 
Код

var
  m: TMenuItem;
  ParentItem: TMenuItem;
begin
  m := Sender as TMenuItem;
  ParentItem := m.Parent;
  ParentItem.Delete(ParentItem.IndexOf(m));
  ParentItem.Insert(0,m);

 


--------------------
    
PM MAIL ICQ Skype   Вверх
Nic442
Дата 30.4.2006, 03:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 5.4.2006
Где: Советский Союз

Репутация: нет
Всего: нет



ВООООООООООООООООООООООООООООООООо !!!!!!!!!!!!!!!! ЗАРАБОТАЛО КАЖИСЬ... smile 
СПАСИБО ВАМ ОБОИМ. Я уже хотел сдаваться и спать....

Добавлено @ 03:49 
ТЕМУ ПОМЕЧАЮ :-) 
PM MAIL   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1899 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.