Форум: "Начинающим";
Текущий архив: 2009.06.21;
Скачать: [xml.tar.bz2];
ВнизStringgrid и Таймер или циклы Найти похожие ветки
← →
Vadim-Nicodim © (2009-05-02 18:19) [0]for k := 0 to StringGrid1.RowCount - 1 do
ShellExecute(Handle,"open",pchar(StringGrid1.Cells [1,k]),nil,nil,SW_SHOWNORMAL);
При данной раскладке передается все содержимое stringgrid,
а нужно чтоб открылось одно окно-задержка-закрытие...следущее окно-задержка-закрытие.....и тд
подскажите пож-та....а то у меня все одним чохом лезет
← →
{RASkov} © (2009-05-02 19:03) [1]> [0] Vadim-Nicodim © (02.05.09 18:19)
> нужно чтоб открылось одно окно-задержка-закрытие...
Что за "окно"?
← →
Vadim-Ncodim (2009-05-02 19:41) [2]окно IE
← →
Германн © (2009-05-02 19:43) [3]
> Vadim-Nicodim © (02.05.09 18:19)
http://delphimaster.ru/cgi-bin/faq.pl?look=1&id=988621841&n=15
← →
Юрий Зотов © (2009-05-02 22:01) [4]> Vadim-Nicodim © (02.05.09 18:19)
Цикл есть. А где окно-то? Нет его.
А чего ж Вы тогда хотите?
← →
KilkennyCat © (2009-05-03 11:59) [5]любопытно, зачем так насиловать ИЕ?
← →
Vadim-Nicodim © (2009-05-03 21:17) [6]Спасибо ВСЕМ КТО ОТВЕЧАЛ И КТО НЕ ОТВЕЧАЛ,на несовсем правильно поставленный вопрос....На счет изнасилования IE ничего сказать не могу,а вот систему насилует такой код капитально....
Виню в этом sleep и свои кривые руки...
procedure TForm1.StartuemClick(Sender: TObject);
var
k: longint;
H: HWND;
begin
StringGrid2.RowCount:=StringGrid2.RowCount+1;
k:=StringGrid2.RowCount-3;
for k := 0 to StringGrid1.RowCount - 1 do
if k<>0 then
begin
ShellExecute(Handle,"open",pchar(StringGrid1.Cells [1,k]),nil,nil,SW_SHOWNORMAL);
sleep(5000);
H := FindWindow("IEFrame", nil);
SendMessage(H, WM_SYSCOMMAND, SC_CLOSE, 0);
end;
end;
Может кто-нибудь подскажет грамотное решение этого вопроса?
← →
Юрий Зотов © (2009-05-03 21:41) [7]> Vadim-Nicodim © (03.05.09 21:17) [6]
Ну вот, теперь окно появилось (FindWindow), теперь есть о чем говорить.
Но с чего Вы взяли, что этот код "насилует" систему? Ничуть.
Поток на 5 секунд останавливается - значит, 5 секунд он не обрабатывает никаких сообщений и поэтому создается впечатление "зависшей" программы или занятости системы. На самом же деле ни программа не зависла, ни система не занята больше обычного. Просто в течение 5 секунд нет перерисовки юзерского интерфейса, только и всего. А чтобы этого избежать, создайте поток (TThread) выполняйте тот же самый код в его методе Execute.
Однако, у Вашего кода есть другой недостаток, более серьезный. Предположим, еще до запуска Вашей программы у юзера был запущен IE. Что произойдет?
← →
{RASkov} © (2009-05-03 21:43) [8]> [6] Vadim-Nicodim © (03.05.09 21:17)
> Может кто-нибудь подскажет грамотное решение этого вопроса?
Я что-то не могу себе представить нужность(отсюда незнаю как ответить) данного алгоритма, а про его реализацию(код [6]) вообще молчу.... ужас :)
← →
Vadim-Nicodim © (2009-05-03 21:59) [9]Если был уже запущен IE то критической ситуации не произойдет...даже если было 10 окон (IE) открыто....здесь беда немножко в другом...что IE (7 версия) имеет нехорошую привычку(если ошибаюсь-поправьте) открывать не в окне,а в вкладочках...А это значит,что уже не будет автомата,так как будет запрос на закрытие и в случае большого кол-ва открытых окон зависание неизбежно....
← →
Vadim-Nicodim © (2009-05-03 22:02) [10]Стоп...да,уважаемый Юрий Зотов...в принципе может.....А мы тогда ...еще до старта заставим все окна закрыть......
← →
sniknik © (2009-05-03 22:03) [11]> открывать не в окне,а в вкладочках...
зависит от пользовательских настроек, кому как нравится тот так и может выставить.
писать под какую то одну настройку глупо. лучше сменить алгоритм.
← →
sniknik © (2009-05-03 22:08) [12]> лучше сменить алгоритм.
вот кстати нафига внешний IE для "слайд шоу"? почему TWebBrowser не использовать? и зачем цикл? если все прекрасно меняется по таймеру. и с ним можно легко сделать например "притормаживание просмотра/следующий, предыдущий кадр/авто воспроизведение" а не только "авто".
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.06.21;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c