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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2011, 17:39   #1
BlackFishSQL
Форумчанин
 
Аватар для BlackFishSQL
 
Регистрация: 02.04.2011
Сообщений: 136
По умолчанию Панелька быстрого запуска!!!

Здравствуйте!!!
Решил попробовать сделать пенель быстрого запуска!!!
Но возникла проблема с которой бился уйму времени и не смог решить!
Так вот на мою панель можно добавлять только 1 любой обьект а как сделать так что бы туда можно было добавить например 10 обьектов!!!
Напишите как это в коде написать!
Вложения
Тип файла: txt код!!!.txt (3.5 Кб, 173 просмотров)
BlackFishSQL вне форума Ответить с цитированием
Старый 02.04.2011, 18:15   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

код в pas файл. Если кода не много то оформить соответствующим тегом
Человек_Борща вне форума Ответить с цитированием
Старый 02.04.2011, 21:12   #3
BlackFishSQL
Форумчанин
 
Аватар для BlackFishSQL
 
Регистрация: 02.04.2011
Сообщений: 136
По умолчанию

Вот скажите что надо дописать чтобы максимум 10 обьектов можно было добавить на панель!!!! Я уже устал мучатся помогите!!!! ПРОШУ!!!!ПОЖАЛУЙСТА!!!!
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, Shellapi;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Label1: TLabel;
    Timer1: TTimer;
    Timer2: TTimer;
    Label2: TLabel;
    Image1: TImage;
    procedure Panel1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
     procedure WmDropFile(var Msg: TWMDropFiles); message WM_DropFiles;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  v, i:integer;
  CFileName:array [0..MAX_PATH] OF Char;    //В этом массиве хранится имя файла
  s:string;                                               //перемещённого мышкой
implementation

{$R *.dfm}

procedure TForm1.Panel1Click(Sender: TObject);
begin
 if v=0 then
  Begin
   Label1.Caption:='<<<<1';
   v:=1;
   Timer1.Enabled:=True
  end   else
  Begin
   Timer2.Enabled:=true;
   Label1.Caption:='0>>>>';
   v:=0;
  end;







 end;

procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Handle,true);
v:=0;
i:=0;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 if i=15 then
 Timer1.Enabled:=false
 else
 Begin
  i:=i+1;
  Form1.Left:=Form1.Left-10;
 End;
end;

procedure TForm1.Timer2Timer(Sender: TObject);

begin
if i=0 then
 Timer2.Enabled:=False
 else
 Begin
  i:=i-1;
  Form1.Left:=Form1.Left+10;
 End;
end;


procedure TForm1.WmDropFile(var Msg: TWMDropFiles);
var Icon:hicon;
    Iconindex:word;
begin
try
if DragQueryFile(Msg.Drop,0, CFileName, MAX_PATH)>0 THEN
Begin
                                                                                          {Функция DragQueryFile извлекает из перенесенных
                                                                                    мышью обьектов путь до этих обьектов,(извлекает имена обьектов)}
                                                                                    {Параметры функции:
                                                                                    1) Msg.Drop дискриптор структуры для перемещяемых файлов!
                                                                                    2) 0 индекс запрашеваемого файла
                                                                                    3)CFileName буфер для имени файла
                                                                                    4)MAX_PATH размер буфера для имени файла}
 
s:=CFileName; //Полный путь до файла который мы перенесли мышкой!
 LAbel2.Caption:=ExtractFileName(s);
 
{Функция ExtractFileName убирает путь до файла и оставляет только его имя!}
 
Msg.Result:=0;
 end;
 finally
 DragFinish(Msg.Drop);
 end;
iconindex:=1;
Image1.Picture.Icon.Handle:=ExtractAssociatedIcon(HInstance, Pchar(s), IconIndex);
DrawIcon(Canvas.Handle,10,10,icon);

end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if Button=mbLeft then
 ShellExecute(Form1.Handle,nil,Pchar(s), nil,nil,SW_RESTORE);
if Button=mbRight then
 s:='';
 Label2.Caption:='';
 end;

procedure TForm1.FormShow(Sender: TObject);
begin
ShowWindow(Application.Handle,SW_HIDE);
end;

end.

Последний раз редактировалось BlackFishSQL; 02.04.2011 в 21:53.
BlackFishSQL вне форума Ответить с цитированием
Старый 02.04.2011, 22:45   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Константой maxObjects=10; и при дропе обьектов проверяем кол-во.
Человек_Борща вне форума Ответить с цитированием
Старый 02.04.2011, 23:01   #5
BlackFishSQL
Форумчанин
 
Аватар для BlackFishSQL
 
Регистрация: 02.04.2011
Сообщений: 136
По умолчанию

Да да я пробовал это правильно но не всё!!! дело в том что в программе так как на форме один image в коде прописан только он! А вот главное как сделать так чтобы
программка работала сразу с каждым image м тоесть сейчас я могу только на один добавлять обьект!! Тоесть на каждого какое либо действие обрабатывала!!!
Мне знакомый посоветовал создать массив из вот этих image эв! Но как не пойму!!
BlackFishSQL вне форума Ответить с цитированием
Старый 02.04.2011, 23:22   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Ищем и читаем "Создание компонентов в Run-time" там ответ.
Человек_Борща вне форума Ответить с цитированием
Старый 02.04.2011, 23:39   #7
BlackFishSQL
Форумчанин
 
Аватар для BlackFishSQL
 
Регистрация: 02.04.2011
Сообщений: 136
По умолчанию

Там написано типа добавлять eDITы по нажатию кнопки но я сразу кидану на форму 10 image ! проблема как в коде описать чтобы все взаимодействовало т.к. если я допишу просто это будет
Цитата:
Константой maxObjects=10;
лажа !
Может просто создать массив из Image а потом в процедуре dropfile везде где обращаемся м imageну замеменить это на имя массива???
BlackFishSQL вне форума Ответить с цитированием
Старый 02.04.2011, 23:44   #8
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

а зачем разделать всё на два?

можно ведь всё в одном DropFile выполнять, создавать в run-time TImage и работать с ним.
Человек_Борща вне форума Ответить с цитированием
Старый 03.04.2011, 00:25   #9
BlackFishSQL
Форумчанин
 
Аватар для BlackFishSQL
 
Регистрация: 02.04.2011
Сообщений: 136
По умолчанию

Цитата:
TImage и работать с ним
Вы имеете ввиду 1 image!
А в программе как это всё описать чтобы я мог к примеру имея 10 свободных мест
на любое (например на 7) поставить обьект!!! Вот главное чего не могу понять!!!
Напишите пожалуйста как это всё будет выглядеть!!
BlackFishSQL вне форума Ответить с цитированием
Старый 03.04.2011, 14:51   #10
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Код:
procedure TForm1.WmDropFile(var Msg: TWMDropFiles);
var Icon:hicon;
    Iconindex:word;
begin
try
if DragQueryFile(Msg.Drop,0, CFileName, MAX_PATH)>0 THEN
Begin
                                                                                          {Функция DragQueryFile извлекает из перенесенных
                                                                                    мышью обьектов путь до этих обьектов,(извлекает имена обьектов)}
                                                                                    {Параметры функции:
                                                                                    1) Msg.Drop дискриптор структуры для перемещяемых файлов!
                                                                                    2) 0 индекс запрашеваемого файла
                                                                                    3)CFileName буфер для имени файла
                                                                                    4)MAX_PATH размер буфера для имени файла}
 
s:=CFileName; //Полный путь до файла который мы перенесли мышкой!
 LAbel2.Caption:=ExtractFileName(s);
 
{Функция ExtractFileName убирает путь до файла и оставляет только его имя!}
 
Msg.Result:=0;
 end;
 finally
 DragFinish(Msg.Drop);
 end;
iconindex:=1;
Image1.Picture.Icon.Handle:=ExtractAssociatedIcon(HInstance, Pchar(s), IconIndex);
DrawIcon(Canvas.Handle,10,10,icon);

end;
здесь вы получаете фаил на панель.

Так тут же и создавайте в run-time ещё один Timage и туда пихайте ЧТО хотите.
Заодно проверяйте нет ли такого же файла уже на панели.
Человек_Борща вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Значки быстрого запуска в Windows 7 Kasper1 Windows 1 26.02.2011 00:35
Фичи для панели быстрого запуска. Alex Cones Софт 10 18.09.2010 10:14
Simple Dock v.0.1.21 Ещё одна панель быстрого запуска Marsel737 Софт 14 05.09.2010 17:52
раскрывающееся панелька Polotenchik Общие вопросы по Java, Java SE, Kotlin 1 12.01.2009 23:57
Панель быстрого запуска. Небесный Операционные системы общие вопросы 3 18.12.2007 00:21