AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Abstrakter Fehler

Ein Thema von steppo · begonnen am 25. Mär 2008 · letzter Beitrag vom 25. Mär 2008
Antwort Antwort
Seite 1 von 2  1 2   
steppo

Registriert seit: 31. Dez 2002
235 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Abstrakter Fehler

  Alt 25. Mär 2008, 00:40
Hallo Leute,

ich rufe aus meinem Programm ein neues Formular auf. Im Formshow erzeuge ich einige Komponenten, unter anderem zwei Buttons. Beide Buttons haben das Ereignis OnClick. Solange ich nur einem Button ein Ereignis zuweise funktioniert alles hervorragend. Sobald ich das zweite Erreignis angebe bekomme ich den Fehler "Abstrakter Fehler".

Delphi-Quellcode:
for i := 1 to 2 do
  begin
    dynButton := TButton.Create(self);
    with dynButton do
    begin
      parent := self;
      Name := 'dynButton' + inttostr(i);
      if i = 1 then
      begin
        caption := '&Abbrechen';
        OnClick := Abbrechen;
      end
      else
      begin
        Caption := 'Datensatz &einfügen';
        OnClick := Datensatz_einfuegen;
      end;
      Width := 105;
      Height := 25;
      left := posButton - ((i - 1) * 105) - ((i - 1) * 10);
      top := (pntPosition.Y + 1) * 50;
    end;
  end;
In der Abbrechen Methode wird lediglich ein boolscher Wert geändert und "Close" aufgerufen.
In der Datensatz_einfuegen Methode wird ebenfalls ein boolscher Wert gesetz und "Close" aufgerufen.

In FormClose werden dann alle Komponenten, auch die Buttons mittels free wieder freigegeben.

Wie gesagt, solange ich nur das Abbrechen Ereignis implementiere funktioniert es.
Kann mir jemand sagen warum das so ist, und wie ich das Problem behebe.

Gruß Steppo
Wir sind heute die, vor denen uns unsere Eltern immer gewarnt haben!
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: Abstrakter Fehler

  Alt 25. Mär 2008, 00:48
Schön, dass du irrelevanten Sourcecode zeigst. Entscheidend ist die Definition davon und die sehe ich nicht.
Gruß
Hansa
  Mit Zitat antworten Zitat
steppo

Registriert seit: 31. Dez 2002
235 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

Re: Abstrakter Fehler

  Alt 25. Mär 2008, 00:54
Was meinst du mit irrelevanten Sourcecode. So erstelle ich die Buttons.

Meinst du die beiden Methoden, die über das Ereignis ausgelöst werden?
Wir sind heute die, vor denen uns unsere Eltern immer gewarnt haben!
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Abstrakter Fehler

  Alt 25. Mär 2008, 00:58
Zitat von steppo:
Meinst du die beiden Methoden, die über das Ereignis ausgelöst werden?
Die meint er
  Mit Zitat antworten Zitat
steppo

Registriert seit: 31. Dez 2002
235 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

Re: Abstrakter Fehler

  Alt 25. Mär 2008, 01:01
Also die, die ich bei meiner Erstellung des Threads aufgeführt habe. O.K.

Delphi-Quellcode:
procedure Tfrm_insertValues.Abbrechen(Sender: TObject);
begin
  boolABortClicked := True;
  Close;

end;

procedure Tfrm_insertValues.Datensatz_einfuegen(Sender: TObject);
begin
  boolABortClicked := False;
  Close;

end;
Gru?ß steppo
Wir sind heute die, vor denen uns unsere Eltern immer gewarnt haben!
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Abstrakter Fehler

  Alt 25. Mär 2008, 01:10
Wo hast du die 2 Proceduren deklariert?
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
steppo

Registriert seit: 31. Dez 2002
235 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

Re: Abstrakter Fehler

  Alt 25. Mär 2008, 07:19
Im Abschnitt private
Delphi-Quellcode:
unit Insert;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Contnrs, StdCtrls, Mask, DBCtrls, DB;

type
  Tfrm_insertValues = class(TForm)
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    procedure Abbrechen(Sender: TObject);
    procedure Datensatz_einfuegen(Sender: TObject);
    procedure Check_DataType(Sender: TObject);

    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  frm_insertValues: Tfrm_insertValues;
  dynOLComponents: Tobjectlist;
  dynEdit: TDBEdit;
  dynLabel: TLabel;
  dynButton: TButton;
  boolABortClicked: Boolean;
implementation
Wir sind heute die, vor denen uns unsere Eltern immer gewarnt haben!
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Abstrakter Fehler

  Alt 25. Mär 2008, 07:26
Du musst die dyn. erstellten Buttons nicht mehr freigeben, dadurch dass Du parent gesetzt hast, kümmert sich dieser darum, und Du gibt sie dann ein 2.Mal frei und erzeugst den Fehler!
(a) Brauchst Du die globalen Variablen?
(b) Ich würde die Unit nicht Insert nennen, wenn du System.Insert o.ä. mal brauchst suchst Du schon ein Weilchen!
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  Mit Zitat antworten Zitat
steppo

Registriert seit: 31. Dez 2002
235 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

Re: Abstrakter Fehler

  Alt 25. Mär 2008, 08:56
Hallo Kroko1999,

das habe ich auch versucht. Rufe ich das Formular jedoch ein weiteres mal auf, so wird ein Fehler erzeugt, der da sagt, dass es bereits einen Button mit diesem Namen gibt.
Wir sind heute die, vor denen uns unsere Eltern immer gewarnt haben!
  Mit Zitat antworten Zitat
TBx
(Moderator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.803 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Abstrakter Fehler

  Alt 25. Mär 2008, 09:08
Zitat von steppo:
Hallo Kroko1999,

das habe ich auch versucht. Rufe ich das Formular jedoch ein weiteres mal auf, so wird ein Fehler erzeugt, der da sagt, dass es bereits einen Button mit diesem Namen gibt.
klar, solche Erzeugungen gehören auch ins OnCreate

Gruß

onlinekater
Gruß Thomas
- Moderator Delphi-Praxis -
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf