AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Inkompatible Typen: Methodenzeiger und reguläre Prozedur
Thema durchsuchen
Ansicht
Themen-Optionen

Inkompatible Typen: Methodenzeiger und reguläre Prozedur

Ein Thema von schuetze09 · begonnen am 14. Apr 2005 · letzter Beitrag vom 15. Apr 2005
Antwort Antwort
Seite 1 von 2  1 2      
schuetze09

Registriert seit: 3. Mär 2004
113 Beiträge
 
Delphi 2005 Architect
 
#1

Inkompatible Typen: Methodenzeiger und reguläre Prozedur

  Alt 14. Apr 2005, 15:44
Hallo,

folgendes Problem, ich erstelle dynamisch Komponenten und ihnen Proceduren zuweisen.
Leider läuft das schief.

Hat einer ne Idee?

so sieht mein Code (gekürzt) aus:
Delphi-Quellcode:
unit NewTab;

uses ...;

procedure NeuerTab;

procedure VST_Edit_OnGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;


var anzSQL:Integer = 0;
    VST_Edit: array of TVirtualStringTree;
    Sheet : array of TTabSheet;


procedure NeuerTab;
begin
  SetLength(Sheet, anzSQL +1);
  SetLength(VST_Edit, anzSQL +1);

  Sheet[anzSQL]:=TTabSheet.Create(Form_Main.PageControl_NewTab);
  Sheet[anzSQL].Parent:=Form_Main.PageControl_NewTab;
  Sheet[anzSQL].PageControl:=Form_Main.PageControl_NewTab;
  Sheet[anzSQL].Caption:='Query '+ IntToStr(Form_Main.PageControl_NewTab.PageCount -1);
  
  VST_Edit[anzSQL]:=TVirtualStringTree.Create(Sheet[anzSQL]);
  VST_Edit[anzSQL].Parent:=Sheet[anzSQL];
  with VST_Edit[anzSQL] do
  begin
    Align:=alClient;
    BorderStyle:=bsNone;
    Header.Background:=clSkyBlue;
    Header.Style:=hsFlatButtons;
    Header.Options:=[hoColumnResize,hoDblClickResize,hoDrag,hoVisible];
    TreeOptions.PaintOptions:=[toShowButtons, toShowDropmark, toShowHorzGridLines, toShowTreeLines, toShowVertGridLines, toThemeAware, toUseBlendedImages, toFullVertGridLines];
    TreeOptions.SelectionOptions:=[toFullRowSelect];
    Name:=NamePrefixVST + IntToStr(anzSQL);
    OnGetText:=VST_Edit_OnGetText; //GEHT NICHT
  end;

  inc(anzSQL);
end;
MfG
schuetze09

[edit=sakura] Leerzeichen in den Quelltext eingelassen. Mfg, sakura[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#2

Re: Inkompatible Typen: Methodenzeiger und reguläre Prozedur

  Alt 14. Apr 2005, 15:54
versuch das ganze mal mit nem @ davor...
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
schuetze09

Registriert seit: 3. Mär 2004
113 Beiträge
 
Delphi 2005 Architect
 
#3

Re: Inkompatible Typen: Methodenzeiger und reguläre Prozedur

  Alt 14. Apr 2005, 16:00
habe ich auch schon probert, dann kommt:
"Inkompatible Typen: TVSTGetTextEvent und Pointer"
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#4

Re: Inkompatible Typen: Methodenzeiger und reguläre Prozedur

  Alt 14. Apr 2005, 16:05
Methoden und Funktionen sind auch immer inkompatibel.
Methoden haben einen zusaetzlichen Parameter Self.

Nein es geht nicht den einer Funkton zu verpassen.

Mal ueber "of object" in der Hilfe nachlesen.
  Mit Zitat antworten Zitat
schuetze09

Registriert seit: 3. Mär 2004
113 Beiträge
 
Delphi 2005 Architect
 
#5

Re: Inkompatible Typen: Methodenzeiger und reguläre Prozedur

  Alt 14. Apr 2005, 16:08
@Robert Marquardt: dann werde ich wohl lesen müssen

Ich hatte gedacht, es gibt dafür eine schnelle kleine Lösung )-:

MfG
schuetze09
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Inkompatible Typen: Methodenzeiger und reguläre Prozedur

  Alt 14. Apr 2005, 17:41
Moin Schuetze09,

Zitat von schuetze09:
Ich hatte gedacht, es gibt dafür eine schnelle kleine Lösung )-:
gibt's.

Hättest Du die Überschrift mal in der Suche eingegeben, wärst Du vermutlich auf einige Threads mit dem gleichen Thema gestossen


BTW:
Kurze und schnelle Lösung:
Mach, wie Dir die Fehlermeldung fast schon vorschlägt, aus der Prozedur eine Methode (z.B. auch vom Formular).
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Phantom1

Registriert seit: 20. Jun 2003
282 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Inkompatible Typen: Methodenzeiger und reguläre Prozedur

  Alt 14. Apr 2005, 21:52
Eine Möglichkeit gibts noch:
Code:
procedure FormClick(Self: TForm; Sender: TObject);
begin
  ShowMessage('OK');
end;

procedure TForm1.FormCreate(Sender: TObject);
var Event: TNotifyEvent;
begin
  with TMethod(Event) do begin
    Code:=@FormClick;
    Data:=Self;
  end;
  Self.OnClick:=Event; // geht !
end;
Mfg
Phantom1
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: Inkompatible Typen: Methodenzeiger und reguläre Prozedur

  Alt 15. Apr 2005, 01:18
Moin!

Ja, super, und? Nun haste da was hingefakt. Super! - aber was ist, wenn du kein Self hast, weil du keine Klasse hast? Warum nutzt du keine Methode von TForm1, wenn du es schon darin alles aufbaust und zuweist?

Fragen über Fragen....

Das ist doch auch nur ein Hack mit TMethod - warum nicht gleich eine kleine Klasse mit statischen Methoden? Die kann man zuweisen und die Klasse muss noch nichtmal angelegt werden...

MfG
Muetze1
  Mit Zitat antworten Zitat
schuetze09

Registriert seit: 3. Mär 2004
113 Beiträge
 
Delphi 2005 Architect
 
#9

Re: Inkompatible Typen: Methodenzeiger und reguläre Prozedur

  Alt 15. Apr 2005, 07:01
Hallo,

ich habe es jetzt wie folgt gemacht, gefällt mir zwar nicht so, aber es geht:

in meiner MainForm habe ich
procedure VST_Edit_OnGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; unter public deklariert. So kann ich dann in meiner NewTab-Unit die procedure dem Event OnGetText zuordnen.

Nicht schön, aber es geht. Eigentlich müssten die proceduren in die NewTab-Unit, da ja dort die Komponenten dynamisch erstellt werden und vom rein logischen Zusammenhang her müssten sie da drin stehen.

MfG
schuetze09
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#10

Re: Inkompatible Typen: Methodenzeiger und reguläre Prozedur

  Alt 15. Apr 2005, 07:04
Du könntest dir in NewTab auch eine Hilfsklasse schreiben in der du die Funktion packen kannst.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz