Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 08.11.2010, 17:14   #1
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
Восклицание Проблема с ProgressBar

Суть такая:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleCtrls, SHDocVw, XPMan, ActiveX, ComCtrls, ToolWin,
  MOZILLACONTROLLib_TLB;

type
  TForm1 = class(TForm)
    XPManifest1: TXPManifest;
    SaveDialog1: TSaveDialog;
    CoolBar1: TCoolBar;
    ToolBar1: TToolBar;
    ComboBox1: TComboBox;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ToolButton3: TToolButton;
    ToolButton4: TToolButton;
    ToolButton5: TToolButton;
    ToolButton6: TToolButton;
    OpenDialog1: TOpenDialog;
    StatusBar1: TStatusBar;
    ProgressBar1: TProgressBar;
    MozillaBrowser1: TMozillaBrowser;
    procedure ComboBox1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure ToolButton1Click(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
    procedure ToolButton4Click(Sender: TObject);
    procedure ToolButton5Click(Sender: TObject);
    procedure ToolButton6Click(Sender: TObject);
    procedure MozillaBrowser1ProgressChange(ASender: TObject; Progress,
      ProgressMax: Integer);
    procedure MozillaBrowser1StatusTextChange(ASender: TObject;
      const Text: WideString);
  private
    { Private declarations }
  public
    { Public declarations }
    Procedure SaveSourceCode(Const FileName:String;WB:TWebBrowser);

  end;

var
  Form1: TForm1;
implementation

{$R *.dfm}

Procedure TForm1.SaveSourceCode(Const FileName:String;WB:TWebBrowser);
var
    PersistStream:IPersistStreamInit;
    FileStream:TFileStream;
    Stream:IStream;
    SaveResult:HRESULT;
begin
      PersistStream:=WB.Document as IPersistStreamInit;
      FileStream:=TFileStream.Create(FileName, fmCreate);
      try
      Stream:=TStreamAdapter.Create(FileStream, soReference) as IStream;
      SaveResult:=PersistStream.Save(Stream, True);
      if FAILED(SaveResult) then
      MessageBox(Form1.Handle, 'Fail to save HTML source', 'Error', 0);
      finally
      FileStream.Free;
      end;
end;

procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
      If Key = VK_RETURN Then
      Begin
      ProgressBar1.Position:=0;
      ComboBox1.Items.Add(ComboBox1.Text);
      MozillaBrowser1.Navigate(ComboBox1.Text);
      End;
end;

procedure TForm1.ToolButton1Click(Sender: TObject);
begin
      if OpenDialog1.Execute then
      begin
            MozillaBrowser1.Navigate(OpenDialog1.FileName);
            ComboBox1.Text:=OpenDialog1.FileName;
      end;
end;

procedure TForm1.ToolButton2Click(Sender: TObject);
begin
      MozillaBrowser1.GoBack;
end;

procedure TForm1.ToolButton3Click(Sender: TObject);
begin
      MozillaBrowser1.GoForward;
end;

procedure TForm1.ToolButton4Click(Sender: TObject);
begin
      MozillaBrowser1.Stop;
end;

procedure TForm1.ToolButton5Click(Sender: TObject);
begin
      MozillaBrowser1.Refresh;
end;

procedure TForm1.ToolButton6Click(Sender: TObject);
var
  PostData,Headers:OLEvariant;
begin
      MozillaBrowser1.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DODEFAULT, PostData,
      Headers);
end;

procedure TForm1.MozillaBrowser1ProgressChange(ASender: TObject; Progress,
  ProgressMax: Integer);
begin
      ProgressBar1.Max:=ProgressMax;
      ProgressBar1.Position:=Progress;
end;

procedure TForm1.MozillaBrowser1StatusTextChange(ASender: TObject;
  const Text: WideString);
begin
      StatusBar1.SimpleText:=Text;
end;

end.
Вот. Ну и когда пытаюсь зайти на Яндекс, то вылетает всё к чертям и пишет ProgressBar1 out of range! Как так, если я ведь обнуляю здесь :
Код:
procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
      If Key = VK_RETURN Then
      Begin
      ProgressBar1.Position:=0;
      ComboBox1.Items.Add(ComboBox1.Text);
      MozillaBrowser1.Navigate(ComboBox1.Text);
      End;
end;
В чём же дело?
_-Re@l-_ вне форума
Старый 08.11.2010, 17:32   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Ставьте бряку на procedure TForm1.MozillaBrowser1ProgressChang e(ASender: TObject; Progress, ProgressMax: Integer); и смотрите значения.
mihali4 вне форума
Старый 08.11.2010, 17:42   #3
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Так, ладно, разобрался. Спасибо
Теперь другая проблема. С этим же. Я вообще к чертям убрал ProgressBar и всё что с ним связано, однако при входе на некоторые сайты выскакивает такое:
_-Re@l-_ вне форума
Старый 08.11.2010, 17:46   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Один вопрос - одна тема. Это - раз.
Второе. Мы - не телепаты.
Садитесь и гуляйте по коду по шагам...
У вас идет обращение к несуществующему объекту.
mihali4 вне форума
Старый 08.11.2010, 17:49   #5
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
Садитесь и гуляйте по коду по шагам...
В смысле как?Никогда не гулял по коду по шагам. Как это делать?
_-Re@l-_ вне форума
Старый 08.11.2010, 18:01   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Ставим бряку на строку "входа на сайт" и дальше F8->F8->... и так далее.
mihali4 вне форума
Старый 08.11.2010, 18:28   #7
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Ясно...Ну ладно. Исправил.
Однако, я заметил что эта ошибка возникает только при использовании MozillaBrowser - при использовании WebBrowser всё нормально, нет ошибок.
Ну что же. Можно закрыть тему.
_-Re@l-_ вне форума
Старый 08.11.2010, 18:58   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
procedure TForm1.MozillaBrowser1ProgressChange(ASender: TObject; Progress,
  ProgressMax: Integer);
begin
      ProgressBar1.Max:=ProgressMax;
      if Progress<=ProgressMax then
       ProgressBar1.Position:=Progress;
end;
I'm learning to live...
Stilet вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с ProgressBar huzik Общие вопросы C/C++ 7 11.07.2013 18:17
ProgressBar mish@ Общие вопросы Delphi 2 27.05.2009 16:56
ProgressBar Simon..14 Общие вопросы C/C++ 10 24.01.2009 14:56
ProgressBar Rahim1993 Общие вопросы Delphi 10 20.01.2008 21:28
ProgressBar Terran Общие вопросы Delphi 5 09.01.2008 21:18