Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.01.2014, 13:51
Аватар для JunkieBeat
JunkieBeat JunkieBeat вне форума
Прохожий
 
Регистрация: 01.02.2013
Сообщения: 48
Версия Delphi: Delphi7 Lite Ed
Репутация: 10
По умолчанию EOleException и webBrowser('About:')

У меня есть 2-ва HTML файла они сжаты с помощью потока ZLIB,когда открываю один все норм,но при открытие второго, EoleException вылетает
Код:
procedure TForm2.OpenStream(obj: TWebBrowser);
var
  AZLib : TDecompressionStream;
  AStream : TFileStream;
  AMemStream : TMemoryStream;
  ALen : Int64;
  str:string;
begin
  str:=mydir+tv1.Selected.parent.Text+'\'+tv1.Selected.Text;
  AStream := TFileStream.Create(str,fmOpenRead);
  AZLib := TDecompressionStream.Create(AStream);
  AMemStream := TMemoryStream.Create;
  Try
    AZLib.ReadBuffer(ALen,SizeOf(Int64));
    AMemStream.CopyFrom(AZLib,ALen);
    AMemStream.Seek(0,0);
    redt1.Lines.LoadFromStream(AMemStream);

  Finally
    AMemStream.Free;
    AZLib.Free;
    AStream.Free;
  End;

  wb1.Navigate('about:'+redt1.text);     //вот тут EOleException

end;

Тегов в файле каких то крутых нету,он спокойно открывался,когда я его не сжимал.

Так в целом в RichEdit Все хорошо открывается никаких проблем,а вот когда я это отправляю в веббраузер появляется ошибка
Ответить с цитированием
  #2  
Старый 23.01.2014, 14:07
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
var
  document: OleVariant;
  stringlist: TStringList;
begin
  WebBrowser.Navigate('a b o u t : b l a n k');
  while WebBrowser.ReadyState<READYSTATE_INTERACTIVE do
    Application.ProcessMessages;
  stringlist:=TStringList.Create;
  try
    stringlist.LoadFromFile('test.htm');
    document:=WebBrowser.Document;
    document.clear;
    document.open;
    document.write(stringlist.Text);
    document.close;
    while WebBrowser.ReadyState<READYSTATE_COMPLETE do
      Application.ProcessMessages;
  finally
    stringlist.Free;
  end;
end;

a b o u t : b l a n k без пробелов писать. форум косячит иначе.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 24.01.2014, 14:33
Аватар для JunkieBeat
JunkieBeat JunkieBeat вне форума
Прохожий
 
Регистрация: 01.02.2013
Сообщения: 48
Версия Delphi: Delphi7 Lite Ed
Репутация: 10
По умолчанию

Спасибо,обошелся временным файлом,не красиво но по рабочему))
Насколько я понял проблема была в том что оператор "about:" принимает ограниченное кол-во символов,а я туда целую страницу посылал,вот и ошибка вылетала.

Но теперь вопрос оффтопом, мне интересно было бы модифицировать компонент PageControl ,а точнее добавить кнопки на вкладки что бы они закрывались. Создал класс,унаследовал его от TPageControl и тут же встал в тупик,ибо хз где прописывать создание кнопки и тд)))
Знаю что такой компонент много кто делает и его можно скачать,но мне интересно написать его самому, может кто уже занимался велосипедами и подскажет как это реализовать или может какие то статейки по этому поводу)
Ответить с цитированием
  #4  
Старый 24.01.2014, 15:29
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от JunkieBeat
...хз где прописывать создание кнопки...
Код:
constructor TPageControl.Create(AOwner: TComponent);
begin
inherited;

... // Вроде здесь

end;
Ответить с цитированием
  #5  
Старый 24.01.2014, 15:38
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от JunkieBeat
Спасибо,обошелся временным файлом,не красиво но по рабочему))
Насколько я понял проблема была в том что оператор "about:" принимает ограниченное кол-во символов,а я туда целую страницу посылал,вот и ошибка вылетала.
А?
Цитата:
Сообщение от JunkieBeat
Но теперь вопрос оффтопом, мне интересно было бы модифицировать компонент PageControl ,а точнее добавить кнопки на вкладки что бы они закрывались. Создал класс,унаследовал его от TPageControl и тут же встал в тупик,ибо хз где прописывать создание кнопки и тд)))
Знаю что такой компонент много кто делает и его можно скачать,но мне интересно написать его самому, может кто уже занимался велосипедами и подскажет как это реализовать или может какие то статейки по этому поводу)
Обычно такое делают не наследуя от TPageControl, а пишут полностью с нуля. Вот например как эти компоненты.

Но можно и над TPageControl поиздеваться. Например он умеет отображать на вкладках картинки если подключить к нему TImageList через свойство Images в которое можно картинку "крестика" поместить. И потом при нажатии (а лучше при отжатии) левой кнопки мышки проверять - если мышка находится над этой картинкой с крестиком, то уничтожать (или скрывать) соответствующую вкладку:
Код:
procedure TForm1.PageControl1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  pt: TPoint;
  idx: Integer;
begin
  pt := PageControl1.ScreenToClient(Mouse.CursorPos);
  if htOnIcon in PageControl1.GetHitTestInfoAt(pt.X, pt.Y) then
  begin
    idx := PageControl1.IndexOfTabAt(pt.X, pt.Y);
    if idx >= 0 then PageControl1.Pages[idx].Free;
  end;
end;

Ещё вместо использования свойства Images можно самому полностью отрисовывать вкладку если установить свойство OwnerDraw в True и прописать отрисовку на событии OnDrawTab.
Ответить с цитированием
  #6  
Старый 24.01.2014, 16:12
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от JunkieBeat
Спасибо,обошелся временным файлом,не красиво но по рабочему))
так не обязательно временный файл то. просто у себя вместо TMemoryStream используй TStringStream и загружай из DataString.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #7  
Старый 24.01.2014, 19:10
Аватар для JunkieBeat
JunkieBeat JunkieBeat вне форума
Прохожий
 
Регистрация: 01.02.2013
Сообщения: 48
Версия Delphi: Delphi7 Lite Ed
Репутация: 10
По умолчанию

NumLock хорошо,опробую,спасибо.

При нажатие на кнопку пытаюсь удалить её,и её родителя, но вылетает EAbstrackError вот полный код компонента

Код:
unit MyTabSheet;

interface

uses
  SysUtils, Classes, Controls, ComCtrls,StdCtrls;
  var
    b:TButton;
type
  TMyTabSheet = class(TTabSheet)
  private
    { Private declarations }
  protected
    { Protected declarations }
    procedure OnClick(Sender:TObject);
  public
    { Public declarations }
  published
    { Published declarations }
    constructor Create(AOwner:TComponent);override;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('MyComp', [TMyTabSheet]);
end;

{ TMyTabSheet }

constructor TMyTabSheet.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);;
  b:=TButton.Create(self);
    b.parent:=self;
    b.Height:=15;
    b.Width:=15;
    b.Caption:='x';
    b.Left:=10;
    b.top:=5;
    b.OnClick:=OnClick;
end;

procedure TMyTabSheet.OnClick(Sender: TObject);
begin
  b.Caption:='qwe';
 // b.Parent.Free;
  b.Free;
end;

end. 

В чем проблема? И заодно спрошу куда прописать код что бы он срабатывал не при выставление объекта,а при запуске формы,что то типо OnActive компонента)

Последний раз редактировалось JunkieBeat, 24.01.2014 в 21:37.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:21.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter