проблема с заставкой

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

проблема с заставкой

Сообщение gtn » 10.12.2015 21:42:26

здоавствуйте! написал прогу на лазаре. все ок.
хочу сделать заставку для нее. сделал вторую форму.пишу
Код: Выделить всё
fLogo.Show;
и получаю
ПРОЕКТ ВЫЗВАЛ ИСКЛЮЧЕНИЕ КЛАССА EXTERNAL SIGSEGV ПО АДРЕСУ 419981


ЗАКОМЕНТИРОВАЛ
Код: Выделить всё
//fLogo.Show;
опять все ок. что можно сделать?
спасибо
gtn
незнакомец
 
Сообщения: 7
Зарегистрирован: 10.12.2015 21:06:59

Re: проблема с заставкой

Сообщение DYUMON » 10.12.2015 23:18:25

у тебя эта форма где создается ? видимо ты пытаешь показать еще не созданную форму.
Аватара пользователя
DYUMON
постоялец
 
Сообщения: 234
Зарегистрирован: 11.03.2009 13:32:54

Re: проблема с заставкой

Сообщение sign » 11.12.2015 06:57:56

Весь секрет вот тут:
2.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Re: проблема с заставкой

Сообщение gtn » 11.12.2015 15:26:16

в том то и дело что создана через файл- создать новую форму
Код: Выделить всё
unit uMain;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, LResources, FileUtil, Forms, Controls, Graphics, Dialogs, Menus,
  ComCtrls, uLogo;

type

  { TfMain }

  TfMain = class(TForm)
    MainMenu1: TMainMenu;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  fMain: TfMain;

implementation
{$R *.lfm}

{ TfMain }

procedure TfMain.FormCreate(Sender: TObject);
begin
  fLogo.Show;
end;

end.

Код: Выделить всё
unit uLogo;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls;

type

  { TfLogo }

  TfLogo = class(TForm)
    Image1: TImage;
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure ImShow(x,y:integer);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  fLogo: TfLogo;

implementation

{$R *.lfm}

{ TfLogo }

procedure TfLogo.ImShow(x,y:integer);
var i:integer;
begin

end;

procedure TfLogo.Timer1Timer(Sender: TObject);
var i:integer;
begin
close;
end;

end.
gtn
незнакомец
 
Сообщения: 7
Зарегистрирован: 10.12.2015 21:06:59

Re: проблема с заставкой

Сообщение DYUMON » 11.12.2015 15:36:06

В менеджере проекта сделай так как на картинке.
А в коде from1 сделай так.
Код: Выделить всё
procedure TForm1.FormCreate(Sender: TObject);
begin
application.CreateForm(TForm2, form2);
form2.show;
end; 
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
DYUMON
постоялец
 
Сообщения: 234
Зарегистрирован: 11.03.2009 13:32:54

Re: проблема с заставкой

Сообщение gtn » 11.12.2015 16:15:47

спасибо

Добавлено спустя 20 минут 38 секунд:
работает, но логотип все равно не показывает

Добавлено спустя 9 минут 20 секунд:
надо было так
Код: Выделить всё
  application.CreateForm(TfLogo,fLogo);
  application.Run;
  fLogo.Show;   

и заработало
большое спасибо
gtn
незнакомец
 
Сообщения: 7
Зарегистрирован: 10.12.2015 21:06:59

Re: проблема с заставкой

Сообщение gtn » 12.12.2015 20:57:29

но тут еще проблема
после логотипа главная форма автоматически не показывается, только щелчком из панели задач
gtn
незнакомец
 
Сообщения: 7
Зарегистрирован: 10.12.2015 21:06:59

Re: проблема с заставкой

Сообщение gtn » 14.12.2015 13:51:27

помогите, плис, уже запарился искать

спасибо
gtn
незнакомец
 
Сообщения: 7
Зарегистрирован: 10.12.2015 21:06:59

Re: проблема с заставкой

Сообщение Лекс Айрин » 14.12.2015 14:06:47

gtn, так активируй ее вручную.

Добавлено спустя 4 минуты 5 секунд:
Код: Выделить всё
form1.SetFocus

Ну и на всякий случай проверь, не создаешь ли ты форму свернутой.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: проблема с заставкой

Сообщение gtn » 15.12.2015 19:20:45

спасибо пацаны!
gtn
незнакомец
 
Сообщения: 7
Зарегистрирован: 10.12.2015 21:06:59

Re: проблема с заставкой

Сообщение Little_Roo » 15.12.2015 20:55:47

Я так делаю - подсмотрел и доволен :D

Исходник проекта
Код: Выделить всё
 
Application.Initialize;
  fmSplash := TfmSplash.Create(nil);   
...


В главной форме
Код: Выделить всё
procedure TForm1.FormCreate(Sender: TObject);
begin
  fmSplash.Show;  //окно отображается немодальным
  fmSplash.Repaint; //метод, заставляющий осуществить
                    //перерисовку формы
  Sleep(3000);    //задержка заставки на 3 сек
  fmSplash.Hide; //метод, делающий форму невидимой
                 //можно было fmSplash.Close
  fmSplash.Free; //освобождение памяти
...

Можно лучше?
Аватара пользователя
Little_Roo
энтузиаст
 
Сообщения: 639
Зарегистрирован: 27.02.2009 19:56:36
Откуда: Санкт-Петербург

Re: проблема с заставкой

Сообщение gtn » 18.12.2015 23:17:00

главную форму все-равно не показывает.что я делаю не так?
Код: Выделить всё
unit uLogo;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls,
  ComCtrls, StdCtrls;

type

  { TfLogo }

  TfLogo = class(TForm)
    Image1: TImage;
    Label1: TLabel;
    Timer1: TTimer;
    Timer2: TTimer;
    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  fLogo: TfLogo;
  fgx,fgy:array [1..8] of integer;
  xi,yj:integer;

implementation

uses uMain;

{$R *.lfm}

procedure triangle(x0,y0,x1,y1,x2,y2:integer);
begin
  with fLogo.Image1.Canvas do begin
    MoveTo(x0,y0);
    LineTo(x1,y1);
    LineTo(x2,y2);
    LineTo(x0,y0);
                              end;
end;
procedure line(x0,y0,x1,y1:integer);
begin
  with fLogo.Image1.Canvas do begin
    Pen.Color:=clRed;
    Pen.Width:=2;
    MoveTo(x0,y0);
    LineTo(x1,y1);
                              end;
end;
{ TfLogo }
procedure TfLogo.Timer1Timer(Sender: TObject);
begin
  if xi=5 then begin
   line(fgx[5],fgy[2],fgx[4],fgy[1]);
   dec(xi);
               end else begin
  line(fgx[xi],fgy[yj],fgx[xi-1],fgy[yj]);
  dec(xi);
  if xi=2 then begin
   line(fgx[2],fgy[1],fgx[1],fgy[2]);
   dec(xi); yj:=3;
   Timer2.Enabled:=true; Timer1.Enabled:=false; exit;
               end;
                        end;

{ line(260,85,210,35);
  line(210,35,160,35);
  line(160,35,110,35);
  line(110,35,60,85);
  line(60,85,110,135);
  line(110,135,160,135);
  line(160,135,210,135);
  line(210,135,260,85);              }
end;

procedure TfLogo.Timer2Timer(Sender: TObject);
begin
  if xi=1 then begin
   line(fgx[1],fgy[2],fgx[2],fgy[3]);
   inc(xi);
               end else begin
  line(fgx[xi],fgy[yj],fgx[xi+1],fgy[yj]);
  inc(xi);
  if xi=4 then line(fgx[4],fgy[3],fgx[5],fgy[2]);
   if xi=5 then close;
                        end;
end;

procedure TfLogo.FormCreate(Sender: TObject);
var i:integer;
begin
  xi:=5; yj:=1;
  for i:=1 to 5 do
   fgx[I]:=10+50*I;
  for i:=1 to 3 do
   fgy[I]:=35+50*(I-1);
  image1.Canvas.Brush.Color:=clwhite;
  image1.Canvas.Rectangle(0,0,fLogo.width,fLogo.height);
  triangle(110,110,160,60,210,110);

end;

procedure TfLogo.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
  CloseAction:=caFree;
  fMAIN.SetFocus;
end;

end.     
Код: Выделить всё
unit uMain;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, LResources, FileUtil, Forms, Controls, Graphics, Dialogs, Menus,
  ComCtrls, uLogo;

type

  { TfMain }

  TfMain = class(TForm)
    MainMenu1: TMainMenu;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  fMain: TfMain;

implementation
{$R *.lfm}

{ TfMain }

procedure TfMain.FormCreate(Sender: TObject);
begin
  Application.CreateForm(TfLogo, fLogo);
  Application.Run;
  fLogo.Show;
end;

end.
               
Код: Выделить всё
program CircuitBuilder;

{$mode objfpc}{$H+}

uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Interfaces, // this includes the LCL widgetset
  Forms, uMain, uLogo;

{$R *.res}

begin
  RequireDerivedFormResource := True;
  Application.Initialize;
  Application.CreateForm(TfMain, fMain);
  Application.Run;
end.
                 

спасибо за ответы

Добавлено спустя 22 часа 33 минуты 37 секунд:
что я делаю не так?
gtn
незнакомец
 
Сообщения: 7
Зарегистрирован: 10.12.2015 21:06:59

Re: проблема с заставкой

Сообщение Alex2013 » 11.01.2016 14:07:36

Брр А Application.Run в procedure TfMain.FormCreate(Sender: TObject); зачем ? :wink:
Alex2013
долгожитель
 
Сообщения: 3145
Зарегистрирован: 03.04.2013 11:59:44


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 248

Рейтинг@Mail.ru