On-line: Pasha, гостей 1. Всего: 2 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 75
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.11.06 21:58. Заголовок: Как прикрутить к терминалке "Окно проводника"


Возможно ли в терминалке вызвать стандарное окно "Выбор файла" как в других языках.
И чтоб он вернул имя и путь выбранного файла.
Заранее спасибо за ответ.


Спасибо: 0 
Профиль
Ответов - 20 [только новые]


администратор




Пост N: 465
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 11.11.06 08:58. Заголовок: Re:


Ты про чистый Harbour ?
Andrey пишет:

 цитата:
Возможно ли в терминалке вызвать стандарное окно "Выбор файла" как в других языках.


Если так то видать как и в Clipper ;)

На Clipper вообще то программил ?


Спасибо: 0 
Профиль
постоянный участник




Пост N: 77
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.11.06 14:14. Заголовок: Re:


Да я про чистый Harbour !

А в клипере разве можно управлять окном "Выбора файлов" ?

Спасибо: 0 
Профиль
Администратор




Пост N: 390
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 12.11.06 10:06. Заголовок: Re:


можно взять модуль source\s_dialogs.c, собрать его с терминальной программой и использовать
Там много всяких вкусных диалогов: ChooseFont(), c_GetFile(), c_PutFile(), BrowseFolder(), ChooseColor()


Спасибо: 0 
Профиль
администратор




Пост N: 467
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.11.06 14:10. Заголовок: Re:


Pasha пишет:

 цитата:
можно взять модуль source\s_dialogs.c


Дружище а где такой модулек то ? ;)
Не вижу в xHarbour однако......

Спасибо: 0 
Профиль
модератор




Пост N: 336
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 12.11.06 18:12. Заголовок: Re:


Dima пишет:

 цитата:
а где такой модулек


По-видимому, Pasha имел в виду файл minigui\source\c_dialogs.c из поставки библиотеки MiniGUI.


Спасибо: 0 
Профиль
администратор




Пост N: 468
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 12.11.06 18:58. Заголовок: Re:


Вот за что я люблю Minigui так это за огромное количество примеров и прочих вкусностей.
Там все есть , как в Греции

Спасибо: 0 
Профиль
модератор




Пост N: 340
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 13.11.06 12:40. Заголовок: Re:


Andrey пишет:

 цитата:
Возможно ли в терминалке вызвать стандарное окно "Выбор файла" как в других языках.
И чтоб он вернул имя и путь выбранного файла.



Ниже пример с возможностью множественного выбора (использует xHarbour библиотеку what32):

// sample test of what32 open file dialog

#include "commdlg.ch"
function main()
local aFileName
local cFileName
local cPath := curdrive()+":\"+curdir()
local aFilter := {{"Zip Files","*.zip"},{"Text Files","*.*"}}

setmode(50,80)

alert("Begin; OK to Continue")

// what32 part
aFileName := getopenfilename(;
getactivewindow(),; // hWnd:
cPath,; // cPath:
"Select Files to Parse",; // cTitle:
aFilter,; // aFilter:
OFN_ALLOWMULTISELECT+OFN_EXPLORER,;// nFlags:
cPath,; // cInitDir:
"zip",; // cDefExt:
1) // nIndex:

// show dialog results
if !empty(aFileName)
for each cFileName in aFileName
? "Selected-> "+cFileName
next
endif

alert("End; OK to Exit")

return(NIL)



Спасибо: 0 
Профиль
Администратор




Пост N: 391
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 13.11.06 15:50. Заголовок: Re:


Да, конечно же оттуда
самое главное я и забыл написать

Спасибо: 0 
Профиль
постоянный участник




Пост N: 80
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.11.06 14:32. Заголовок: Re:


Не удается собрать библиотеку what32.lib
Выдает такое сообщение:

MAKE Version 5.2 Copyright (c) 1987, 2000 Borland
bcc32 -tW -DHB_API_MACROS -DHB_STACK_MACROS -DHB_OS_WIN_32 -DHB_FM_STATISTICS_OFF -d -a8 -OS -O2 -5 -c -w-8075 -I.\include;..\..\include /nobj\b32 source\_wincall.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
source\_wincall.c:
Warning W8002 source\_wincall.c 114: Restarting compile using assembly in function DynaCall
Error E2133: Unable to execute command 'tasm32.exe'

** error 1 ** deleting obj\b32\_wincall.obj

Я так понимаю, что нужен турбоассемблер, а где его взять ?
У меня стандартный free Borland C.
Киньте ссылку на tasm32 или если несложно на мыло: 30195@mail.ru
Заранее спасибо.


Спасибо: 0 
Профиль





Пост N: 78
Зарегистрирован: 28.06.05
ссылка на сообщение  Отправлено: 14.11.06 18:59. Заголовок: Re:


а зачем собирать - выдрать из PRG
getopenfilename
и

HB_FUNC( _GETOPENFILENAME ) -- обернуть в

#pragma BEGINDUMP
...
#pragma ENDDUMP

и все.

Спасибо: 0 
Профиль
постоянный участник


Пост N: 36
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 15.11.06 21:46. Заголовок: Re:


Andrey пишет:

 цитата:
Киньте ссылку на tasm32 или если несложно на мыло: 30195@mail.ru



Не сложно
кинул

Спасибо: 0 
Профиль
постоянный участник




Пост N: 84
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.11.06 22:00. Заголовок: Re:


А еще одну вещь для терминалки возможно ?
Нужно вызвать стандартное Window окно сообщений с кнопочками !
С "крестиком" или "Восклиц.знаком" и "Да" - "Нет".

Спасибо: 0 
Профиль
Администратор




Пост N: 393
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 16.11.06 11:21. Заголовок: Re:


Из минигуи - это модуль c_msgbox.c

Из what32 - функции MessageBox(), MessageBeep()

Спасибо: 0 
Профиль
постоянный участник




Пост N: 87
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.11.06 19:18. Заголовок: Re:


gfilatov пишет:

 цитата:
Ниже пример с возможностью множественного выбора (использует xHarbour библиотеку what32):



Так, собрал я библиотеку и пример. Классно, но "Окно выбора файла" под основную задачу прячется, хотя там вроде getactivewindow() стоить.
И не по центру экрана.
Что делать ?

И как сразу бы открывать Окно проводника на "Мой компьютер" ?
Я не знаю как задать "Мой копьютер" (или где он "живет") ?



Спасибо: 0 
Профиль
постоянный участник




Пост N: 92
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.11.06 22:18. Заголовок: Re:


Ну что вы все забыли про меня ?

Спасибо: 0 
Профиль





Пост N: 79
Зарегистрирован: 28.06.05
ссылка на сообщение  Отправлено: 18.11.06 18:05. Заголовок: Re:


есть MSDN
совершенно нормально в xHarbour использовать Windows API.

Спасибо: 0 
Профиль
постоянный участник




Пост N: 94
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.11.06 00:54. Заголовок: Re:


А как его использовать ?
Если ты его используешь, то скинь пример.
Заранее спасибо.

Спасибо: 0 
Профиль





Пост N: 80
Зарегистрирован: 28.06.05
ссылка на сообщение  Отправлено: 19.11.06 18:52. Заголовок: Re:


Ну - надо установить MSDN (изрядно места занимает, но дело того стоит).
Выбрать закладку "Index". Указать там GetOpenFileName.
Рекомендую также ознакомиться с "OPENFILENAME Structure".
Описание - на пару страниц. Внутре есть линк на пример.
Как это прикручивается к Харбору см. в исходниках любой GUI-библиотеки.
Удачи!

Спасибо: 0 
Профиль





Пост N: 219
Зарегистрирован: 08.04.06
ссылка на сообщение  Отправлено: 27.02.08 12:30. Заголовок: Петр пишет: цитата..


Петр пишет:

 цитата:
цитата:
Киньте ссылку на tasm32 или если несложно на мыло: 30195@mail.ru

Не сложно
кинул


А мне можно на kniga@online.ru ? А то я один какой-то скачал (стало доставать окошко блокнота с ошибкой при сборке xHarbour'а), а он при запуске виндозную ошибку выдаёт...
Спасибо!

Спасибо: 0 
Профиль
постоянный участник




Пост N: 514
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.03.08 15:39. Заголовок: Самый простой пример..


Самый простой пример у Александра Кресина:

Function main( )
Local mypath := "\" + CURDIR() + IIF( EMPTY( CURDIR() ), "", "\" )
Local fname

fname := SelectFile( "xBase prog files( *.prg )", "*.*", mypath )

? fname
?
wait
return Nil


// -----------------------------------------------
// Вставка на C в программе для Harbour'a
#pragma BEGINDUMP
#define _WIN32_WINNT 0x0400
#define OEMRESOURCE
#include <windows.h>
#include "hbapi.h"
#include "hbapiitm.h"
#include "hbvm.h"

HB_FUNC( SELECTFILE )
{
OPENFILENAME ofn;
char buffer[512];
char *strFilter, *str1 = hb_parc( 1 ), *str2 = hb_parc( 2 );
char *initDir = ( hb_pcount()>2 && ISCHAR(3) )? hb_parc(3):NULL;
char *cTitle = ( hb_pcount()>3 && ISCHAR(4) )? hb_parc(4):NULL;


strFilter = (char*) hb_xgrab( strlen(str1) + strlen(str2) + 4 );
if( strFilter == NULL )
{
hb_retc( "NULL" );
return;
}
memset( strFilter, 0, strlen(str1) + strlen(str2) + 4 );
strcpy( strFilter, str1 );
strcpy( strFilter+strlen(str1)+1, str2 );

memset( (void*) &ofn, 0, sizeof( OPENFILENAME ) );
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = GetActiveWindow();
ofn.lpstrFilter = strFilter;
ofn.lpstrFile = buffer;
buffer[0] = 0;
ofn.nMaxFile = 512;
ofn.lpstrInitialDir = initDir;
ofn.lpstrTitle = cTitle;
ofn.Flags = OFN_FILEMUSTEXIST|OFN_EXPLORER;

if( GetOpenFileName( &ofn ) )
hb_retc( ofn.lpstrFile );
else
hb_retc( "" );
hb_xfree( strFilter );
}

#pragma ENDDUMP

Другие тоже собрал которые рекомендовали.
Сунулся пересобрать под хХарбор 1 - ошибки полезли.
Если надо, то конечно соберу. А высылать куда ?

Спасибо: 0 
Профиль
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 108
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет