Показать сообщение отдельно
  #1  
Старый 05.08.2015, 07:52
Gareth Gareth вне форума
Активный
 
Регистрация: 21.03.2013
Адрес: Приднестровье
Сообщения: 202
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Проблема с динамическим событием

Здравствуйте!

Пытаюсь на динамической кнопке (SpeedButton) сделать обработчик события Onclick. В котором данный код:
Код:
var
   Icon : TIcon;
   IconIndex: Word;
begin

  if S[SensonTag]='' then
    begin
     if  sOpenDialog1.Execute then
    begin
       S[SensonTag]:=sOpenDialog1.FileName;
         Q[SensonTag].Glyph:=nil;
         Icon:=TIcon.Create;

         StrPCopy (Pch,S[IntToStr(SensonTag)]  );
         Icon.Handle:= ExtractAssociatedIcon(hInstance, Pch, IconIndex);
         Q[SensonTag].Glyph.Width:= Icon.Width;
         Q[SensonTag].Glyph.Height:= Icon.Height;
         Q[SensonTag].Glyph.Canvas.Draw(0, 0, Icon);
         Q[SensonTag].Caption:=ExtractFileName(s[1]);
         Icon.Free;
    end;

      end
      else
          begin
          ShellExecute (Form1.Handle, nil,PChar(S[IntToStr(SensonTag)]), nil, nil, SW_RESTORE);
          end;
end;


Переменные:
Код:
  Q:array [1..25] of  TSpeedButton;
  S:array [1..25] of string;
  I,SensonTag  :Integer; 
   Pch: array[0..256] of Char;

Хочу сделать, что бы по клику динамической кнопки, происходил выбор программы(или любого другого файла) через Opendialog1, далее запуск выбранной программы...

При наведении на динамическую кнопку, в переменную SensorTag передается Tag кнопки. По этому в коде всё ссылается на данную переменную.

У меня проблема в 14 строке. Мне нужно указать в массиве S[] переменную SensorTag. Я пробовал так как в коде - вылетает ошибка.
Пробовал переставлять IntToStr, думая что не там написал - не помогло.

Так же проблема в 26 строке, конкретно в этом отрывке PChar(S[IntToStr(SensonTag)])
Опять же, пытаюсь впихнуть переменную в String массив.

Помогите пожалуйста. Что делаю не так ?
Ответить с цитированием