Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2013, 12:43   #1
siemenscx75
Пользователь
 
Регистрация: 08.05.2013
Сообщений: 10
Восклицание Delphi ,немогу исправить ошибку в коде

Программа - панель , куда можно добавлять ярлыки , запускать и удалять их.
Цитата:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, ExtCtrls,
ShellAPI, StdCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure ImageClick(Sender: TObject);
procedure WMDropFiles(var Msg: TMessage); message wm_DropFiles;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
MyLabelIndex: integer=0; //Порядковый номер ярлыка на форме
MyLabelIcon: array[1..100] of TImage; //массив для картинок
MyLabelPutch: array[1..100] of string; //массив для полного имени файла
MyLabelName: array[1..100] of string; //массив для коротких имен файлов
PosX,
PosY,
StepImg //размер на сколько будет сдвигаться координата по X и по Y
:integer;
implementation
{$R *.dfm}
//функция запуска приложений
procedure RunFiles(putch_name:string); //в функцию передаем имя файла
var
HANDLES : HWND;
begin
HANDLES:=FindWindow('TForm1', 'Form1');
//при нажатии на кнопку мыши пробуем открыть приложение соцеируемое с нашей катинкой
ShellExecute( HANDLES, 'open', PChar(putch_name), nil, nil, SW_SHOWNORMAL);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Handle, True);
PosX:=0; //тукущая позиция по Х 0
PosY:=0; //тукущая позиция по У 0
StepImg:=0; //считываем размер заданной эталонной картинки
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
// закрываем поток контроля забрасывания на форму файлов
DragAcceptFiles(Handle, False);
end;
function ShortNameFile(NameFile:string):stri ng; //короткое имя файла
var
L:integer; //длинна всей строки
tmpString:string; //результат найденного имени
begin
if length(NameFile)=3 then ShortNameFile:= NameFile //есди это имя диска то ничего с ним не делаем
else
begin
L:= length(NameFile); //ставим курсор на последний символ
//ищем короткое имя файла до первого символа \
while NameFile[L]<>'\' do
begin
tmpString:=NameFile[L]+tmpString; //прибавляем символ к результату
L:=L-1; //сдвигаем курсор на 1 позицию назаl
end;
ShortNameFile:=tmpString;
end;
end;
procedure TForm1.WMDropFiles(var Msg: TMessage);
var
MyNameFile:array[0 .. 256] of Char; //имя моего файла заброшенного на форму
Name:string; //просто имя самого файла
infoFile:SHFILEINFO; //сбда будем получать информацию о файлике
flag:Cardinal; //размер иконки
begin
MyLabelIndex:=MyLabelIndex+1; //если скинули файл то считаем каунтером
if MyLabelIndex<100 then //если вдруг накидают 100 ярлыков то это выйдет за пределы массива поэтому
begin
{ Получаем имя файла }
DragQueryFile( THandle(Msg.WParam),0, { это номер файла } MyNameFile,SizeOf(MyNameFile) ) ;
Name:=LowerCase(StrPas(MyNameFile)) ; //имя файла в стрингах
//настраиваем внешний вид
flag:=SHGFI_ICON; //параметры отображения картинки
flag:=flag or SHGFI_LARGEICON; //SHGFI_SMALLICON параметры отображения картинки если хочеться большой заначек то SHGFI_LARGEICON
SHGetFileInfo(MyNameFile,0,infoFile ,SizeOf(infoFile),flag); //получаем ифномацию о фейле
//Image1.Picture.Icon.Handle:= infoFile.hIcon; //загружаем иконку файла в image
// MyLabelIcon[MyLabelIndex] :=TImage.Create(Panel1) ; //создаем картинку на панели
//определяем для нее параметры
with MyLabelIcon[MyLabelIndex].Create(Panel1) do
begin
Top:=0; //по умолчанию в одну строку
Left:=PosX; //задаем параметр координаты по Х
Visible:=true; //отображаем на всякий случа
AutoSize:=true; //задаем авторазмер картинки
Picture.Icon.Handle:=infoFile.hIcon ; //загружаем иконку файла в image
hint:=ShortNameFile(Name); //задаем подпись хинта
ShowHint:=true; //показываем хинт
// OnClick:=ImageClick; //задаем собиытие
Parent:=Panel1; //панель
end;
//MyLabelIcon[MyLabelIndex].OnClick:=Panel1Click(Sender: TObject);
//сохраняем путь к файлу в отдельным массив собственно из него и будем понимать какой файл запускать
MyLabelPutch[MyLabelIndex]:= Name; //сохраняем длинное имя картинки
MyLabelName[MyLabelIndex]:=ShortNameFile(Name); //задаем короткое имя в массив чтобы знать на каку кнопку нажали
StepImg:= MyLabelIcon[MyLabelIndex].Width+3; //сдвигаем картинку на размер
PosX:=PosX + StepImg; //позиция сдвигаеться на размер картинки
end;
end;
procedure TForm1.ImageClick(Sender: TObject);
begin
ShowMessage(' Click!!!');
end;
end.
siemenscx75 вне форума Ответить с цитированием
Старый 30.05.2013, 14:56   #2
siemenscx75
Пользователь
 
Регистрация: 08.05.2013
Сообщений: 10
По умолчанию

Если тему просматривает модератор , удалите эту , т.к. я создал случайно две , у вас здесь в первый раз и не знаю как удалить)
siemenscx75 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
исправить ошибку в коде 22hope22 C# (си шарп) 3 28.05.2013 18:08
Исправить ошибку в коде программы на Delphi, работающей с орграфом, до 7 часов МСК Bambura Фриланс 4 26.05.2012 21:48
исправить ошибку в коде с++ Gared Помощь студентам 1 20.05.2011 20:41
Немогу исправить ошибку Bighead Помощь студентам 0 15.01.2011 15:40
Исправить ошибку в коде на С !!!!! Dgarul Помощь студентам 0 31.05.2010 22:36