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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Диалог выбора значка... 
:(
    Опции темы
V.Turecky
Дата 11.8.2002, 22:14 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Всем привет. Нужна Ваша помощь. Следующая конструкция открывает "Диалог выбора значка". Проблема в том, что я не могу использовать строку FileName := ExtractFilePath(ParamStr(0))+'pfdimg.dll';
Помогите!

Код
procedure SelectIcon;
var
FileName: array[0..MAX_PATH - 1] of Char;
Size, Index: LongInt;
begin
Size := MAX_PATH;
//Если строкове значение, то всё работает:
//FileName := 'C:\Program Files\BLA\pfdimg.dll';
//А если вот это, то Incompatible types: 'Array' and 'String'
FileName := ExtractFilePath(ParamStr(0))+'pfdimg.dll';
 if PickIconDlgA(0, FileName, Size, Index) then begin
  if (Index <> -1) then
   frmMain.ImgShotcut2.Picture.Icon.Handle := ExtractIcon(hInstance, FileName, Index);
 end;
end;

  Вверх
Vit
Дата 12.8.2002, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Код
procedure SelectIcon;
var
FileName: String;
Size, Index: LongInt;
begin
Size := MAX_PATH;
FileName := ExtractFilePath(ParamStr(0))+'pfdimg.dll';
if PickIconDlgA(0, PChar(FileName), Size, Index) then begin
 if (Index <> -1) then
  frmMain.ImgShotcut2.Picture.Icon.Handle := ExtractIcon(hInstance, PChar(FileName), Index);
end;
end;



--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
_pussbb
Дата 13.4.2007, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 7.12.2006

Репутация: нет
Всего: нет



люди помогите хочу применить ваш программный код в своей проге на С++ но ничего не получаэться пробывал на дефи компильнуть ваш но тоже выводит ошибки короче говоря PickIconDlg инициализирован в ShlObj.h вставляю хедер файл но не работает  smile  smile  
PM MAIL WWW   Вверх
ama_kid
Дата 13.4.2007, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 15
Всего: 95



Вот тебе код на дельфи - переводи  smile 
Код

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type
  TIconDialog = class(TObject)
    constructor Create(FileName:string);
    destructor Destroy; override;
    function Execute: Boolean;
  private
    { Private declarations }
    FIcon: TIcon;
    FFileName: String;
    FIndex: Integer;
    function GetAnyFile: String;
  protected
    { Protected declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
  IconDialog: TIconDialog;
implementation

{$R *.dfm}

function PickIconDlg(OwnerWnd: HWND; lpstrFile: PWideChar; var nMaxFile: LongInt;
 var lpdwIconIndex: LongInt): LongBool; stdcall; external 'SHELL32.DLL' index 62;

constructor TIconDialog.Create(FileName:string);
begin
inherited Create;
FFileName:=FileName;
FIcon := TIcon.Create;
end;

destructor TIconDialog.Destroy;
begin
FIcon.Free;
inherited Destroy;
end;

function TIconDialog.Execute: Boolean;
var
zFileName: array [0..MAX_PATH - 1] of AnsiChar;
zwFileName: array [0..MAX_PATH - 1] of WideChar;
zSize, zIndex: LongInt;
begin
 if not ((FFileName <> '') and FileExists(FFileName)) then FFileName:=GetDefaultFile;
 StrPCopy(zFileName,FFileName);

 Result := PickIconDlg(0,StringToOleStr(FFileName),zSize,zIndex);
 FIndex := zIndex;
 if (FFileName <> '') and (FIndex <> -1) then
 begin
  FIcon.Handle := ExtractIcon(hInstance,zFileName,zIndex);
 end;
end;

function TIconDialog.GetDefaultFile: String;
var
 zSysDir: array [0..MAX_PATH - 1] of Char;
 SysDir: String;
begin
GetSystemDirectory(zSysDir,255);
SysDir := StrPas(zSysDir);
if SysDir[Length(SysDir)] <> '\' then
 begin
  SysDir := SysDir + '\';
 end;
Result := SysDir + 'SHELL32.DLL';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 IconDialog:=TIconDialog.Create('');
 IconDialog.Execute;
end;

end.




--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0661 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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