Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.06.03;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
1-6956
ymin
2002-05-22 16:45
2002.06.03
Почему по команде form1.print ни один combobox не печатается?


1-7079
Zevsus
2002-05-21 11:49
2002.06.03
Как определить, какие *.bpl взять с собой?


1-7097
DenNNis
2002-05-22 13:50
2002.06.03
String + Char ????


3-6916
Саша
2002-05-14 07:49
2002.06.03
dbgrid.options


1-7090
BJValentine
2002-05-20 09:58
2002.06.03
Динамический массив





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский