Вопрос № 29226: Привет!
Как заставить Internet Explorer загрузить нужную страницу? Например: www.rambler.ru? Я ищу его окно среди резидентов и получаю его хендл в переменной W.
var W:HWND;
begin
W:=FindWindow('IEFrame',nil);
If W > 32 T...Вопрос № 29229: Уважаемые эксперты!
Подскажите как получить доступ к dbf-файлам.
Всё вроде делаю правильно. Table1.active true показывает базу.
При выполнении выдаёт Invalid Table name....Вопрос № 29240: Дрям!
Есть ListView в режиме vsReport, ReadOnly = False. По окончании редактирования Item-а, ловлю текст в событии OnEdited, если текст совпадает с каким-нить другим Item-ом, то надо отменить изменение - т.е. вернуть первоначальное значение capti...
Вопрос № 29.226
Привет!
Как заставить Internet Explorer загрузить нужную страницу? Например: www.rambler.ru? Я ищу его окно среди резидентов и получаю его хендл в переменной W.
var W:HWND;
begin
W:=FindWindow('IEFrame',nil);
If W > 32 Then
begin
ShowMessage('Internet Explorer in memory');
// .... ????
end;
end;
Как через этот хендл послать Internet Explorer-у команду грузить нужную мне страницу?
Открывает броузер по умолчанию (!) с указанной страницей.
P.S. Тока не забудьте добавить ShellAPI в uses.
Если же Вам всё таки хочется через Find... тогда думаю необходимо найти на окне IEFrame компонент (FindComponent) типа ComboBox (? надо проверить) и передать ему текст (PostMessage (Wnd, WM_Char, 'h', 0);).
--------- Пусть все будет хорошо! Давайте жить дружно! :) И будет жить еще лучше!
Ответ отправил: LanK (статус: 2-ой класс)
Отправлен: 09.11.2005, 11:31 Оценка за ответ: 5 Комментарий оценки: Точно! Только не ShellExecute(Application.Handle, а ShellExecute(W, Поскольку первая - хендл моей проги. Да вот думаю веселить пользователей. Но не у всех есть подключение к инету. А так как лень проверять, то неличие эксплорера какая никакая гарантия.
Отвечает: Werewolf
Здравствуйте, Березуев Роман Иванович!
Если подходит вариант с запуском, тогда можно просто:
...
uses shellAPI;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(Application.Handle,'open','http://www.rambler.ru',nil,nil,SW_NORMAL)
end;
//если хотите по своему то
procedure TForm1.Button2Click(Sender: TObject);
var W:HWND;
i:byte;
begin
W:=FindWindow('IEFrame',nil);
If W > 32 Then
begin
//ShowMessage('Internet Explorer in memory');
for i:=1 to 3 do
W:=GetWindow(W,GW_CHILD);
PostMessage(W,WM_SETFOCUS,0,0);
SendMessage(W, WM_SETTEXT, 0, Integer(PChar('http://www.ya.ru')));
SetForegroundWindow(W);
keybd_event(VK_RETURN,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
keybd_event(VK_RETURN,0,KEYEVENTF_EXTENDEDKEY,0);
keybd_event(VK_RETURN,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
end;
end;
end.
Ответ отправил: Werewolf (статус: Студент)
Отправлен: 09.11.2005, 13:38 Оценка за ответ: 5 Комментарий оценки: Второй вариант не работает, но все равно спасибо за первый рабочий.
Отвечает: Schmak
Здравствуйте, Березуев Роман Иванович!
Лучше используйте ShellExecute, для этого объявите модуль ShellAPI и вызовите
ShellExecute(0,'open','www.rusfaq.ru',nil,nil,sw_show)
Правда откроет он не обязательно в IE, а браузере,установленном по умолчанию.
--------- Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: 7-ой класс)
Отправлен: 09.11.2005, 16:45 Оценка за ответ: 5 Комментарий оценки: Точно! Все знают, а я почемуто не знал :( Только не ShellExecute(0,'open' А так ShellExecute(W,'open' Спасибо.
Вопрос № 29.229
Уважаемые эксперты!
Подскажите как получить доступ к dbf-файлам.
Всё вроде делаю правильно. Table1.active true показывает базу.
При выполнении выдаёт Invalid Table name.
Отправлен: 09.11.2005, 11:47
Вопрос задал: Ramil (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: nimoid
Здравствуйте, Ramil!
Table1.TableName точно задано верно? Больше ничего в голову не приходит...
--------- А так все хорошо начиналось...
Ответ отправил: nimoid (статус: 4-ый класс)
Отправлен: 09.11.2005, 13:10
Отвечает: Маренич Владимир
Здравствуйте, Ramil!
Table1.TableType:=ttDBase;
Table1.DatabaseName:='c: est';
Table1.TableName:='Clients';
Table1.Open;
Ответ отправил: Маренич Владимир (статус: 5-ый класс)
Отправлен: 09.11.2005, 13:34 Оценка за ответ: 5 Комментарий оценки: Спасибо!
Отвечает: sir henry
Здравствуйте, Ramil!
1. Через что работаем (BDE, ADO, (сторонние компоненты)?
2. Что значит "показывает базу"? База - это набор таблиц находящихся в одном каталоге (в данном случае).
3. Если задав Active:=True во время разработки вы видите содержимое таблицы в компоненте, выбраном Вами для отображения данных, значит первоначально имя таблицы указано правильно. Следовательно, если после запуска программы выдается ошибка "Invalid Table name", у Вас в каком-то месте Вашей программы имя таблицы теряется. Без просмотра исходного кода и свойств компонета Table1 выявить ошибку невозможно.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 09.11.2005, 13:40
Отвечает: Lector
Здравствуйте, Ramil!
Используйте halcyon-компоненты. Если что-то непонятно - смотри в примеры :-). Качать отсюда: http://www.pssoft.ru/components.html.
--------- Хочешь помочь старику - сделай вместо него. Хочешь помочь новичку - сделай вместе с ним. Хочешь помочь мастеру - отойди и не мешай, а хочешь помочь дураку - сам дурак.
Ответ отправил: Lector (статус: 8-ой класс)
Отправлен: 09.11.2005, 15:16
Вопрос № 29.240
Дрям!
Есть ListView в режиме vsReport, ReadOnly = False. По окончании редактирования Item-а, ловлю текст в событии OnEdited, если текст совпадает с каким-нить другим Item-ом, то надо отменить изменение - т.е. вернуть первоначальное значение caption-а.
Но вот что-то отмена эта никак не выходит... кто знает как решить проблему?
Отправлен: 09.11.2005, 14:04
Вопрос задал: nimoid (статус: 4-ый класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 4)
Отвечает: sir henry
Здравствуйте, nimoid!
Там есть еще событие OnEditing, которое происходит ДО начала редактирования. Кто Вам мешает в этом событии сохранить старый заголовок?
Ответ отправил: sir henry (статус: Академик)
Отправлен: 09.11.2005, 14:39 Оценка за ответ: 4 Комментарий оценки: procedure TfrmMain.ListView1Edited(Sender: TObject; Item: TListItem; var S: String); begin // S - новый текст // Item - редактируемый item // Item.Caption - можно получить старый текст end;
Проблема не в получении старого заголовка, проблема в его возобновлении.
Отвечает: Ataman N. N.
Здравствуйте, nimoid!
Вашу проблему я решил таким образом:
1. Завел глобальную переменную OldCap: String;
2. При выделении Item'а запоминаю старый заголовок;
3. В событии OnEdited ищу совпадения нового заголовка с заголовками всех остальных Item'ов,
если такой заголовок уже существует, то S := OldCap.
Привожу пример кода:
//********************************************************************
procedure TForm1.ListView1Edited(Sender: TObject; Item: TListItem;
var S: String);
var i: Integer;
begin
for i := 0 to ListView1.Items.Count - 1 do
if ListView1.Items[i].Caption = Item.Caption then
begin
S := OldCap;
Exit;
end;
end;
Ответ отправил: Ataman N. N. (статус: 1-ый класс)
Отправлен: 09.11.2005, 16:04 Оценка за ответ: 5 Комментарий оценки: Пасиб, чет сразу до меня не дошло, что S можно присвоить значение =) S := Item.Caption;