Конференция "KOL" » Версия 3.04 [Delphi]
 
  • Vladimir Kladov © (04.02.11 14:51) [40]
    Ничего удивительного, Sender всегда само меню. Для доступа к тагу пункта меню надо его взять:
    Sender.Items[Item].Tag

  • Santa (04.02.11 15:53) [41]
    Самое удивительное, что взял меню присвоил Tag, опять нуль приходит!
  • Santa (04.02.11 15:58) [42]
    ОЙ, вру, все нормально. Я забыл пересобрать проект.
  • Dufa © (04.02.11 16:12) [43]
    Santa, Есть вариант еще проще. У меню назначаешь обработчик OnMenuItem и в нем:


    procedure TForm1.mnuMainMenuItem(Sender: PMenu; Item: Integer);
    begin
       case Item of
         mnuA:
           ;
         mnuB:
    .....

  • Dufa © (04.02.11 16:20) [44]

    > program Project1;
    >
    > uses
    >  KOL;
    >
    > var sl: PStrList;
    >
    > begin
    >  sl := NewStrList;
    > //  sl.Add('1');
    >  sl.Sort(False);
    >  ShowMessage('1');
    > end.


    Можно исправить так:
    procedure TStrList.Sort(CaseSensitive: Boolean);
    asm
           MOV      [EAX].fCaseSensitiveSort, DL
           MOV      [EAX].fAnsiSort, 0
     {$IFDEF SPEED_FASTER}
             {$DEFINE SORT_STRLIST_ARRAY}
     {$ENDIF}
     {$IFDEF TLIST_FAST}
             {$UNDEF SORT_STRLIST_ARRAY}
     {$ENDIF}
           {$IFDEF  SORT_STRLIST_ARRAY}
           MOV      ECX, offset[StrComp]
           CMP      DL, 0
           JNZ      @@01
             {$IFDEF  SMALLER_CODE}
             MOV      ECX, offset[StrComp_NoCase]
             {$ELSE}
             MOV      ECX, [StrComp_NoCase]
             {$ENDIF}
    @@01:
           MOV      EAX, [EAX].fList
           test eax, eax
           jz @exit
           MOV      EDX, [EAX].TList.fCount
           CMP      EDX, 1
           JLE      @@02
           MOV      EAX, [EAX].TList.fItems
           CALL     SortArray
    @@02:
           {$ELSE}
           PUSH     Offset[TStrList.Swap]
           MOV      ECX, Offset[CompareStrListItems_Case]
           CMP      DL, 0
           JNZ      @1
           MOV      ECX, Offset[CompareStrListItems_NoCase]
    @1:     MOV      EDX, [EAX].fCount
           CALL     SortData
           {$ENDIF}
    @exit:
    end;

  • Santa (04.02.11 16:22) [45]
    Ну это на все меню хорошо, если оно почти одинаковое. А если две разные структуры надо реализовать на разные части, то по сути эта процедура будет состоять как бы из двух логических частей, что смысла в таком случае все сводить в одну процедуру не вижу. Хотя дела вкуса.
  • Dufa © (04.02.11 19:32) [46]

    procedure TForm1.MainMenuN200Menu(Sender: PMenu; Item: Integer);


    Тогда почему не юзать Item? =)
 
Конференция "KOL" » Версия 3.04 [Delphi]
Есть новые Нет новых   [134431   +5][b:0][p:0.001]