Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как связать EmbeddedWB1NewWindow2 с Paramstr(2), событие NewWindow2 + Paramstrp + ppdisp  
V
    Опции темы
s2004
Дата 26.10.2012, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 30.10.2006

Репутация: нет
Всего: нет



перебрал параметры ини файлов, но код не работает.
запись в ини файл идёт, а вот такое впечатление, что не читается.

Код


procedure TForm30.FormCreate(Sender: TObject);
var
  Ini:TIniFile;
begin
  with TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'net.ini') do
  begin
    {Здесь мы считываем высоту (Top) и отступ от
     левого края экрана (Left) нашей формы}
    form30.Top := ReadInteger('FormPosition', 'Top', form30.Top);
    form30.Left := ReadInteger('FormPosition', 'Left', form30.Left);
    {Соответственно загружаем
     длину (Height) и ширину (Width)}
    form30.Height := ReadInteger('FormSize', 'Height', form30.Height);
    form30.Width := ReadInteger('FormSize', 'Width', form30.Width);
    {Уничтожаем экземпляр}
//    Free;
//  end;
//var
// Ini:TIniFile;
//begin
NewForm;
// Ini:=TiniFile.Create(extractfilepath(paramstr(0))+'net.ini');
//  self.Width:=Ini.ReadInteger('Size','Width',100);
  //последнее значение (100) это значение по умолчанию (default)
//  self.Height:=Ini.ReadInteger('Size','Height',100);
//  self.Left:=Ini.ReadInteger('Position','X',10);
//  self.Top:=Ini.ReadInteger('Position','Y',10);
/////////Ini := TIniFile.Create('netwin.ini');
//Ini:=TiniFile.Create(extractfilepath(paramstr(0))+'net.ini');
//  self.Width:=Ini.ReadInteger('Size','Width',1024);
//  self.Height:=Ini.ReadInteger('Size','Height',768);
//  self.Left:=Ini.ReadInteger('Position','X',0);
//  self.Top:=Ini.ReadInteger('Position','Y',0);
//  RadioButton1.Checked:=Ini.ReadBool('self','RadioButton1Checked',RadioButton1.Checked); // состояние CheckBox1
//  RadioButton2.Checked:=Ini.ReadBool('self','RadioButton2Checked',RadioButton2.Checked);
  s := Ini.ReadString('files', 'path', ''); // <--- Здесь задай дефолтное значение
//  tform1.Image1.Picture.LoadFromFile(s);
  Ini.Free;
  end;
end;
procedure TForm30.FormDestroy(Sender: TObject);
//begin
var
Ini: Tinifile;
//////////begin
/////Ini := TIniFile.Create('netwin.ini');
//  Ini:=TiniFile.Create(extractfilepath(paramstr(0))+'net.ini');
 //////// Ini.WriteInteger('Size','Width',self.width);
/////  Ini.WriteInteger('Size','Height',self.height);
 //// Ini.WriteInteger('Position','X',self.left);
 /////// Ini.WriteInteger('Position','Y',self.top);
//  Ini.WriteBool('FORM1','CheckBox1Checked',n1.Checked);

//  Ini.WriteBool('FORM1','video1Checked',n2.Checked);
 // checkbox1.checked := ini.readbool('first section','edit key',false);
//////////  Ini.WriteString('files','path', s); // <--- Сохраняешь измененный путь
 /////////// Ini.Free;
//  Links.Free;
 // HistoryMenu.Free;
//  end;
///end;
//var
//  Ini: Tinifile; //необходимо создать объект, чтоб потом с ним работать
//begin
begin
  with TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'net.ini') do
  begin
    {Здесь мы сохраняем высоту (Top) и отступ от
     левого края экрана (Left) нашей формы}
    WriteInteger('FormPosition', 'Top', form30.Top);
    WriteInteger('FormPosition', 'Left', form30.Left);
    {Следующие два метода хранят размеры формы,
     соответственно длину (Height) и ширину (Width)}
    WriteInteger('FormSize', 'Height', form30.Height);
    WriteInteger('FormSize', 'Width', form30.Width);
    {Ну и, конечно же, уничтожаем наш экземпляр}
//    Free;





  //создали файл в директории программы
//  Ini:=TiniFile.Create(extractfilepath(paramstr(0))+'net.ini');
//  Ini.WriteInteger('Size','Width',self.width);
//  Ini.WriteInteger('Size','Height',self.height);
//  Ini.WriteInteger('Position','X',self.left);
//  Ini.WriteInteger('Position','Y',self.top);
  Ini.WriteString('files','path', s);
  Ini.Free;
end;
end;




PM MAIL   Вверх
Чучмек
Дата 26.10.2012, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



breakpoint в TForm30.FormCreate поставь. И через F7/F8 посмотри читается или нет.

Добавлено через 1 минуту и 56 секунд
Form30 - это что за зверь?


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
Чучмек
Дата 27.10.2012, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



Код

unit StartForm_Unit;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,unit1;
type
  TFormXXX = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  FormXXX: TFormXXX;
  form_count:cardinal=0;
//Здесь переменные для хранения настроек!!!
function NewForm:Idispatch;
procedure DecFormCount;
implementation
{$R *.dfm}
function NewForm:Idispatch;
begin
 with TForm1.Create(nil)do
  begin
  caption:=FormCaption;
  visible:=true;
  result:=WebBrowser1.DefaultDispatch;
  inc(form_count);
  //Здесь применяешь настройки к каждой вновь создаваемой форме 
  end;
end;
procedure DecFormCount;
begin
dec(form_count);
if form_count=0 then 
 begin
 //Здесь сохраняешь настройки при завершении приложения
 application.Terminate;
 end;
end;
procedure TFormXXX.FormCreate(Sender: TObject);
begin
//Здесь загружаешь настройки в переменные при запуске приложения 
NewForm;
end;
end.



--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
s2004
Дата 27.10.2012, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 30.10.2006

Репутация: нет
Всего: нет



Код

function NewForm:Idispatch;
var
  Ini:TIniFile;
begin
 with TForm1.Create(nil)do
  begin
  caption:=app_Caption;
  visible:=true;
  result:=embeddedwb1.DefaultDispatch;
  inc(form_count);
  Ini:=TiniFile.Create(extractfilepath(paramstr(0))+'net.ini');
  form30.Width:=Ini.ReadInteger('Size','Width',1024);
  form30.Height:=Ini.ReadInteger('Size','Height',768);
  form30.Left:=Ini.ReadInteger('Position','X',0);
  form30.Top:=Ini.ReadInteger('Position','Y',0);

  end;
end;

procedure DecFormCount;
var
Ini: Tinifile;
s: string;

begin
dec(form_count);
if form_count=0 then application.Terminate;
 Ini:=TiniFile.Create(extractfilepath(paramstr(0))+'net.ini');
  Ini.WriteInteger('Size','Width',form30.width);
  Ini.WriteInteger('Size','Height',form30.height);
  Ini.WriteInteger('Position','X',form30.left);
  Ini.WriteInteger('Position','Y',form30.top);
//  Ini.WriteString('files','path', s);
  Ini.Free;
end;



а переменную s ставил в 
Код

s := Ini.ReadString('files', 'path', '');
NewForm;


но при запуске ошибку пишет и браузер не работает заремачил вначале надо добиться чтобы положение и размер сохранял и восстанавливал. по выше привидённому коду пишет инифайл
Код

[Size]
Width=1024
Height=768
[Position]
X=0
Y=0

и всё, его не меняет. размеры и положение не изменяет.
PM MAIL   Вверх
Чучмек
Дата 27.10.2012, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



Что такое Form30???


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
s2004
Дата 28.10.2012, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 30.10.2006

Репутация: нет
Всего: нет



form30 это StartForm_Unit
PM MAIL   Вверх
Чучмек
Дата 28.10.2012, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



А зачем ты настройки невидимого окна сохраняешь???


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
s2004
Дата 28.10.2012, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 30.10.2006

Репутация: нет
Всего: нет



так вот вначале сохранял form1, потом пробовал form30
PM MAIL   Вверх
Чучмек
Дата 28.10.2012, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



Рановато ты за это взялся, по видимому :(


Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  ppppp5.7z 182,76 Kb


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
s2004
Дата 28.10.2012, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 30.10.2006

Репутация: нет
Всего: нет



Цитата(Чучмек @ 28.10.2012,  19:36)
Рановато ты за это взялся, по видимому :(

нормально, это у меня хобби на 1-2 месяца в год для себя. и разумеется, если незаниматься языком то забываешь и по новой приходится вспоминать, но хочется себе любимому smile.

архив распаковал, посмотрел не работает. у меня ini работали пока я не начал менять по теме, вероятно где то какая- та ошибка. файл config.ini несоздаётся.
PM MAIL   Вверх
Чучмек
Дата 28.10.2012, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



Цитата(s2004 @  28.10.2012,  19:59 Найти цитируемый пост)
архив распаковал, посмотрел не работает

В меню есть пункт "Запомнить позицию"


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
s2004
Дата 28.10.2012, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 30.10.2006

Репутация: нет
Всего: нет



да моя не внимательность :( - работает.
PM MAIL   Вверх
s2004
Дата 30.10.2012, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 30.10.2006

Репутация: нет
Всего: нет



Чучмек (благодарю за расширенные ответы с примерами) вопрос по чтению файла с диска без подтверждения - до модернизации код был в form1

Код


function get(FName:string): boolean;
var
form1: tform1;
//
begin
 form1.EmbeddedWB1.Navigate(FName);
end;
oncreate...
if ParamCount <> 0 then get(ParamStr(1));




теперь, как бы надо использовать form30. подстовлял различные параметры, но не работает
Код

form30
function get(fname:string): boolean;
var
self: tform1;
begin
 self.EmbeddedWB1.Navigate(FName);  
end;
end;

form30
oncreate
if ParamCount <> 0 then get(ParamStr(1));



программа запускается, но при попытки открыть файл с диска пишет ошибку и загрузка файла непроисходит
PM MAIL   Вверх
Чучмек
Дата 31.10.2012, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 14
Всего: 41



Посмотри соседнюю тему про несколько окон одного класса.
Если в функции/процедуре было обрашение   к форме/компонентам на форме
Возможны варианты 
а) сделать функцию методом класса TFormN (доступ к форме через self)
б) добавить параметр Form:TForm и передавать self 
Добавь в функцию NewForm параметр SelfForm:TForm (как в моем последнем примере)
И делай проверку SelfForm=nil (при первом вызове в  NewForm передавай nil, при открытии нового окна передавай текущее(self)) 
Код

function NewForm(SelfForm:TForm)...
begin
...
with TForm1.Create(Application)do
 begin
 ...
 ...
 if not Assigned(SelfForm) and (ParamCount > 0) then get(ParamStr(1));
 ...
 end;
...
end;

Функцию get сделай методом TForm1
Код

function TForm1.get(fname:string): boolean;
begin
EmbeddedWB1.Navigate(FName);  
end;



Это сообщение отредактировал(а) Чучмек - 31.10.2012, 12:53


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
s2004
Дата 6.11.2012, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 30.10.2006

Репутация: нет
Всего: нет



Чучмек при попытки в form30 исправить функции newform и tform.get вылетают ошибки, при исправление в form1 ошибки нет. но и не работает. ты уже объяснял нельзя ли подробней всё таки по поводу form30?

Это сообщение отредактировал(а) s2004 - 6.11.2012, 19:41
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0605 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.