Bestätigungsfenster mit "ok"

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
vogti
Beiträge: 16
Registriert: So 21. Dez 2008, 14:15

Bestätigungsfenster mit "ok"

Beitrag von vogti »

Hallo,
zunächst: ich bin ein neuling in der Programmierung mit Delphi, also bitte nicht hauen :)
Ich habe folgenden Code:

Code: Alles auswählen

unit Unit1; 
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  StdCtrls, Unit2;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    beenden: TButton;
    nachricht: TMemo;
    zeichen: TLabel;
    procedure beendenClick(Sender: TObject);
    procedure nachrichtChange(Sender: TObject);
    function laenge_check(message:string):byte;
  private
    message:string;
    laenge:byte;
  public
    { public declarations }
  end; 
 
var
  Form1: TForm1;
 
implementation
 
{ TForm1 }
 
procedure TForm1.beendenClick(Sender: TObject);
begin
  close;
end;
 
function TForm1.laenge_check(message:string):byte;
begin
  laenge:=length(message);
  zeichen.Caption:=IntToStr(140-laenge);
end;
 
procedure TForm1.nachrichtChange(Sender: TObject);
begin
  laenge:=laenge_check(nachricht.Text);
  if laenge < 0 then TForm2.ShowModal;
 
end;
 
initialization
  {$I unit1.lrs}
 
end.
Ich möchte die Länge eines Strings auslesen (zählt von 140 runter). Sind es also mehr als 140 Zeichen, so soll ein Nachrichtenfenster ála "Sie dürfen nicht mehr als 140 Zeichen nutzen" - "(Ok Button)" kommen. Ein Freund meinte, dass dies möglicherweise mit ShowModal geht. Ich habe also eine 2. Unit angelegt und dort eben diese Einträge erledigt.

Code: Alles auswählen

unit Unit2; 
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  StdCtrls;
 
type
 
  { TForm2 }
 
  TForm2 = class(TForm)
    Ok: TButton;
    zulang: TLabel;
    procedure OkClick(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end; 
 
var
  Form2: TForm2; 
 
implementation
 
{ TForm2 }
 
procedure TForm2.OkClick(Sender: TObject);
begin
  close;
end;
 
initialization
  {$I unit2.lrs}
 
end.
Das funktioniert so jedoch nicht. Ich bekomme folgende Fehlermeldungen:
unit1.pas(41,17) Warning: Function result does not seem to be set
unit1.pas(50,38) Error: Only class methods can be referred with class references
unit1.pas(50,22) Warning: unreachable code
unit1.pas(59) Fatal: There were 1 errors compiling module, stopping
Ich gehe also davon aus, dass ich ShowModal entweder falsch verwende, oder es aber eine komplett ander Lösung für mein "Problem" gibt.

Hoffe ihr könnt mir helfen.


lg,
vogti

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Re: Bestätigungsfenster mit "ok"

Beitrag von creed steiger »

ShowModal ?

Dein Freund hat wohl ShowMessage gemeint.

http://www.delphibasics.co.uk/RTL.asp?Name=ShowMessage" onclick="window.open(this.href);return false;

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: Bestätigungsfenster mit "ok"

Beitrag von Euklid »

Hallo vogti,

würde dir wie creed steiger ShowMessage empfehlen. Lösche am Besten die 2. Form wieder und ersetze obige Zeile 51 durch:

Code: Alles auswählen

if laenge < 0 then ShowMessage('Zu viele Zeichen!');
Ich hoffe, das hilft dir weiter.

Viele Grüße, Euklid

vogti
Beiträge: 16
Registriert: So 21. Dez 2008, 14:15

Re: Bestätigungsfenster mit "ok"

Beitrag von vogti »

creed steiger hat geschrieben:ShowModal ?

Dein Freund hat wohl ShowMessage gemeint.

http://www.delphibasics.co.uk/RTL.asp?Name=ShowMessage" onclick="window.open(this.href);return false;
Supi! Das hat auf jedenfall geholfen!
Und wie kann ich ein eigenes Form anzeigen lassen? Beispielsweise 2 Editfelder und einen Bestätigungsbutton?

Targion
Beiträge: 688
Registriert: Mi 3. Okt 2007, 21:00
OS, Lazarus, FPC: Linux (L 0.9.29 FPC 2.4.2)
CPU-Target: x86_64

Re: Bestätigungsfenster mit "ok"

Beitrag von Targion »

Einfach das Form erstellen (wird meißtens automatisch gemacht) und dann mit

Code: Alles auswählen

Form2.Show;
anzeigen lassen, oder wenn du ein modales Fenster willst (Altes Formular wird solange inaktiv, bis das neue geschlossen ist)

Code: Alles auswählen

Form2.ShowModal;
benutzen. (nicht TForm2.ShowModal ! Formularnamen ggf. anpassen)

vogti
Beiträge: 16
Registriert: So 21. Dez 2008, 14:15

Re: Bestätigungsfenster mit "ok"

Beitrag von vogti »

Perfekt danke!

Falls das hier noch jemand liest: dabei nicht vergessen auch "Unit2" unter "uses" mit anzugeben ;)

ts230
Beiträge: 109
Registriert: Sa 20. Dez 2008, 20:42
OS, Lazarus, FPC: Linux (L 0.9.24)
CPU-Target: 32Bit
Wohnort: San Jose,CA
Kontaktdaten:

Re: Bestätigungsfenster mit "ok"

Beitrag von ts230 »

Oder halt einfach so:

Code: Alles auswählen

MessageDlg('Bestätigen','Wollen sie diese Aktion wirklich durchführen?',mtConfirmation,[mbOK],'');

Code: Alles auswählen

 If beitragHilfreich then leseitdurch()else volle_ignoranz();
tiersendung.funpic.de

Antworten