Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 295
от 14.11.2005, 20:03

Администратор:Калашников О.А.
В рассылке:Подписчиков: 249, Экспертов: 47
В номере:Вопросов: 3, Ответов: 9


Вопрос № 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-у команду грузить нужную мне страницу?
Отправлен: 09.11.2005, 11:10
Вопрос задал: Березуев Роман Иванович (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: LanK
Здравствуйте, Березуев Роман Иванович!

Странный вопрос, а зачем??

стандартная WinAPI команда:
ShellExecute(Application.Handle, 'open', 'http://allvav.narod.ru/chgk/', nil, nil, SW_NORMAL);

Открывает броузер по умолчанию (!) с указанной страницей.

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.ListView1SelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
begin
OldCap := Item.Caption;
end;

//********************************************************************
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;


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Яндекс Rambler's Top100 hotlog_js="1.0"; hotlog_r=""+Math.random()+"&s=314124&im=101&r="+escape(document.referrer)+"&pg="+ escape(window.location.href); document.cookie="hotlog=1; path=/"; hotlog_r+="&c="+(document.cookie?"Y":"N"); hotlog_js="1.1";hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N") hotlog_js="1.2"; hotlog_r+="&wh="+screen.width+'x'+screen.height+"&px="+ (((navigator.appName.substring(0,3)=="Mic"))? screen.colorDepth:screen.pixelDepth) hotlog_js="1.3" hotlog_r+="&js="+hotlog_js; document.write("HotLog")

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Архив рассылки
Отписаться
Вспомнить пароль

В избранное