Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Inkompatible Typen [Winapi.Windows.tagLOGBRUSH] (https://www.delphipraxis.net/179676-inkompatible-typen-%5Bwinapi-windows-taglogbrush%5D.html)

milos 24. Mär 2014 12:31

Inkompatible Typen [Winapi.Windows.tagLOGBRUSH]
 
Hallo schon wieder :D

Habe eine TList mit einem Objekt in einer Form als public variable eingetragen.

Nun will ich sie von einem anderen Form aus überschreiben, doch ich erhalte folgenden Fehler:
Zitat:

[dcc32 Fehler] MIDIControllerForm.pas(71): E2010 Inkompatible Typen: 'System.Generics.Collections.TList<Winapi.Windows. tagLOGBRUSH>' und 'System.Generics.Collections.TList<Patterns.TPatte rn>'
Doch eigentlich sind beide zu 100% ein TList<TPattern>, das sagt mir sogar die IDE wenn ich mit der Maus rüberfahre.

Delphi-Quellcode:
procedure TfrmMIDIController.ReloadAll;
begin
  if Assigned(FMIDIMain.Patterns) then
    FMIDIMain.Patterns := FPatterns;
end;
Delphi-Quellcode:
unit MIDIMainForm;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Generics.Collections,
  PixelFrost.MIDI, Vcl.ExtCtrls, D2DDrawer, Vcl.StdCtrls;

type
  TfrmMIDIMain = class(TForm)
    procedure FormPaint(Sender: TObject);
    procedure FormResize(Sender: TObject);
  private
    { Private-Deklarationen }
    FDrawer : TD2DDrawer;
  public
    { Public-Deklarationen }
    Patterns : TList<TPattern>;
  end;

var
  frmMIDIMain: TfrmMIDIMain;

implementation

{$R *.dfm}

procedure TfrmMIDIMain.FormPaint(Sender: TObject);
begin

  FDrawer := TD2DDrawer.Create(self);

  FDrawer.Canvas.BeginDraw;



  FDrawer.DrawRect(0,0,ClientWidth-1,ClientHeight+1);

  FDrawer.Canvas.EndDraw;
end;

procedure TfrmMIDIMain.FormResize(Sender: TObject);
begin
  Invalidate();
end;

end.
Ich verstehe nicht wieso das nicht klappt...
Dr. Google konnte mir auch keine Antwort geben

MfG

nuclearping 24. Mär 2014 12:49

AW: Inkompatible Typen [Winapi.Windows.tagLOGBRUSH]
 
Delphi-Quellcode:
procedure TfrmMIDIController.ReloadAll;
begin
  if Assigned(FMIDIMain.Patterns) then
    FMIDIMain.Patterns := FPatterns;
end;
Scheinbar beisst sich
Delphi-Quellcode:
TfrmMIDIMain.Patterns: TPatterns
mit
Delphi-Quellcode:
TfrmMIDIController.FPatterns
.

In welcher Reihenfolge bindest du die Units ein? Weil in
Delphi-Quellcode:
Winapi.Windows.pas
gibt es
Delphi-Quellcode:
type
  ...
  PPattern = ^TPattern;
  TPattern = TLogBrush;
Wenn du
Delphi-Quellcode:
Winapi.Windows
nach
Delphi-Quellcode:
PixelFrost.MIDI
(da wird wohl TPattern definiert?) einbindest, wird der Typ wieder überschrieben.

milos 24. Mär 2014 12:55

AW: Inkompatible Typen [Winapi.Windows.tagLOGBRUSH]
 
Ach mann bin ich Blöd x)

Hatte TPattern in einer separaten Unit, habe aber vergessen diese einzutragen. Da aber TPattern eigentlich ja schon vorhanden war, wurde kein Fehler ausgegeben.

Danke, hätte ohne dich wohl Stunden danach gesucht xD

MfG


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz