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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка понятная, но как исправить? 
V
    Опции темы
Демо
Дата 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   Вверх
Страницы: (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.0964 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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