![]() |
Forms und OOP
Hallo,
ich habe mal eine Frage zu der Objektorientieren Programmierung unter Delphi 7 Professional. Ist es möglich, wenn man mit Fenstern arbeitet, Objektorientiert zu programmieren??? Ich meine wenn man ein neues Formular (eine neue Form) haben möchte, dann wird diese ja immer von der Klasse TForm abgeleitet. Wenn ich aber zum Beispiel eine Klasse die schon von TForm abgeleitet ist von einer anderen auch noch ableiten. So ich hoffe ich kommte mein primäres Problem relativ gut beschreiben. Mit freundlichen Grüßen Christian18 |
Re: Forms und OOP
Zitat:
Falls die Frage war, ob es in Delphi Mehrfachvererbung gibt: Nein |
Re: Forms und OOP
Hi!
Von welcher anderen denn z.B.? Ciao Frederic |
Re: Forms und OOP
Hallo,
vielen dank für die schnelle antwort. Also ich benutze OOP zum Beipsiel um Quellcode redundanz zu vermeiden. Und dazu müsste ich in einigen Projekten von mir eine Klasse die von TForm schon abgeleitet ist auch noch von einer anderen Klasse ableiten. Das ist jetzt vieleicht ein bisschen schwer zu verstehen, aber ich gebe mal ein Bsp.: Überall wo ich eingeben habe, kennzeichne ich meine Edit Felder farbig. Um eine Quellcode redundanz zu vermeiden, habe ich eine Procedure entwicklet, die überall in die Subklasse könnte. ich müsste die Editfelder nur mit der Procedure verbinden und dann funktinierts. da ich aber jetzt nicht weiß wie ich das anstellen soll, habe ich mir gedacht poste ich das einfach mal. Also habt ihr jetzt einen Tipp für mich??? Ich habe schon versucht an stelle von TForm den Klassennamen meiner übergeordneten klasse zu schreiben, dann funktioniert aber leider das Programm nicht mehr. MFG Christian18 |
Re: Forms und OOP
Über Datei/neu/Weitere.. -> Dein Projektname kannst du ein neues Formular von einem bereits vorhandenem Formular ableiten.
Du musst halt dazu ein Basis Formular erstellen das alles gleiche bereits erhält.. |
Re: Forms und OOP
Also wenn in einem Edit-Feld was drin steht, soll es eine andere Farbe haben wie wenn es leer ist? Dann würde ich mir eher ein neues TEdit ableiten, hat ja mit dem Form eigentlich nix zu tun.
|
Re: Forms und OOP
Das ist immer noch zu undurchsichtig. 8)
Zitat:
Zitat:
|
Re: Forms und OOP
Hi,
also, nicht alles muss in eine Basisklasse. Das Einfärben der Editfelder lässt sich z.B. eleganter lösen:
Delphi-Quellcode:
die Unit in Uses des MainForm und an einer günstigen Stelle:
unit EditColorHandler;
interface Uses Forms, Classes, Controls, Graphics, StdCtrls; Const _ActiveColor = $009BF5FD; _DefaultColor = clWhite; type TEditColorHandler = class(TObject) private FActiveControl: TWinControl; FActive: Boolean; procedure SetActive(const Value: Boolean); public procedure doActiveControlChange(Sender: TObject); property Active: Boolean read FActive write SetActive; end; Var AppEditColorHandler: TEditColorHandler; implementation procedure TEditColorHandler.doActiveControlChange(Sender: TObject); begin if Assigned(FActiveControl) and FActiveControl.HandleAllocated and (FActiveControl is TEdit) then TEdit(FActiveControl).Color := _DefaultColor; FActiveControl := Screen.ActiveControl; if FActiveControl is TEdit then TEdit(FActiveControl).Color := _ActiveColor; end; procedure TEditColorHandler.SetActive(const Value: Boolean); begin if FActive <> Value then begin FActive := Value; if FActive then Screen.OnActiveControlChange := doActiveControlChange else Screen.OnActiveControlChange := nil; end; end; initialization AppEditColorHandler := TEditColorHandler.Create; finalization AppEditColorHandler.Free; end.
Delphi-Quellcode:
AppEditColorHandler.Active := True;
Cu, Frank |
Re: Forms und OOP
@dataspider: Wenn du das ganze so angehst (also mit zusäzlicher Unit) wäre es doch bedeutend schöner gleich eine Ableitung von TEdit zu machen.
|
Re: Forms und OOP
Zitat:
Wenn man noch eine Ableitung von TMemo... machen muss, ist die Unit doch einfacher anzupassen. Frank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:51 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-2025 by Thomas Breitkreuz