Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.03;
Скачать: CL | DM;

Вниз

ComboTreeview1   Найти похожие ветки 

 
Fly` ©   (2002-05-20 18:23) [0]

Подскажите плиз где взять компонент ! Должен выглядеть как ComboBox и при нажатии на кнопку должно возникать окно как у TreeView. Аналог выбора пути у проводника. Только с возможностью вставки своих Items.


 
pb   (2002-05-20 18:27) [1]

1stClass


 
MBo ©   (2002-05-20 18:38) [2]

при нажатии на кнопку делай treeview видимым и bringtofront, а по событию нужного выбора, какое оно там у тебя, копируй в edit и visible:=false;


 
Дмитрий Баранов   (2002-05-20 19:05) [3]

Я написал кусок и утомился :)) Дальше - сам, уж будь добр ))
см. IShellFolder::BindToObject;
IShellFolder::EnumObjects;
IEnumIDList::Next и т.п. Сделай рекурсию до 2-3 уровня, получится нечто вроде выпадающего поиска в Search for files and folders в win2k




uses ComObj, ShlObj, ShellApi, ActiveX;

{$R *.dfm}

type
TCBInfo = class
Indent: integer;
Image: INTEGER;
Caption: string;
ForParsing: string;
end;

function GetString(const RET: _STRRET; pidl: PItemIdList): string;
begin
case RET.uType of
STRRET_CSTR:
begin
Result:=StrPas(RET.pStr);
exit;
end;
STRRET_WSTR:
begin
Result:=RET.pOleStr;
exit;
end;
STRRET_OFFSET:
begin
Result:=StrPas(PChar(BYTE(pidl) + RET.uOffset ) );
end;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var pidl: PItemIDList;
Desktop: IShellFolder;
Info: TCBInfo;
FILEINFO: SHFILEINFOA;
Value: _STRRET ;
begin
CoInitialize(nil);
SHGetDesktopFolder(Desktop);
SHGetSpecialFolderLocation(Self.Handle, CSIDL_DESKTOP, pidl);

Info:=TCBInfo.Create;
Info.Indent:=5;

Desktop.GetDisplayNameOf(pidl, SHGDN_NORMAL, Value);
Info.Caption:=GetString(VALUE, pidl);

Desktop.GetDisplayNameOf(pidl, SHGDN_FORPARSING, Value);
Info.ForParsing:=GetString(VALUE, pidl);

ImageList1.Handle:=SHGetFileInfo(
PChar(pidl),
SFGAO_SHARE,
FileInfo,
sizeof(FileInfo),
SHGFI_PIDL or SHGFI_SYSICONINDEX or SHGFI_SMALLICON
);

iNFO.Image:=Fileinfo.iIcon;

ComboBox1.Items.AddObject("", iNFO);

end;

procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var Icon: TIcon;
begin
Icon:=TIcon.Create;
ImageList1.GetIcon(TCBInfo(ComboBox1.Items.Objects[Index]).Image, Icon);
Combobox1.Canvas.FillRect((Rect));
ComboBox1.Canvas.Draw(Rect.Left, Rect.Top, Icon);
ComboBox1.Canvas.TextOut(Rect.Left + 18, Rect.Top + 2, TCBInfo(ComboBox1.Items.Objects[Index]).Caption);
end;


 
Елена ©   (2002-05-21 09:57) [4]

Дмитрий Баранов, простите, но Ваш пример работает с ошибкой нарушения доступа. Только что проверила.


 
Дмитрий Баранов   (2002-05-21 10:04) [5]

Поподробнее, пожалуйста. Чего там, Access Viоlation вылазит?


 
Дмитрий Баранов   (2002-05-21 10:05) [6]

Пример сырой, глюкавый и написан из спортивного интереса за 15 минут... Может быть.


 
Fly` ©   (2002-05-22 05:19) [7]

Благодарю за отзывчивость !



Страницы: 1 вся ветка

Текущий архив: 2002.06.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
1-7022
Vladimir N.
2002-05-21 16:10
2002.06.03
Ворос по стандартному меню (высота строки) и CheckListBox-у


14-7213
IronHawk
2002-04-26 13:16
2002.06.03
Админам посвящаеться 4 :-))) ))) и последнее...


8-7123
ilg
2002-01-14 14:17
2002.06.03
Как сделать Screenshot из видеоролика (TMediaPlayer)?


1-6974
arturk
2002-05-22 21:54
2002.06.03
StringGrid


3-6905
Dimaiv
2002-05-13 16:36
2002.06.03
Как сделать чтоб при поиске не учитывался регистр.