AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Neue Dialogklasse: TColorForm (Alpha-Version)
Thema durchsuchen
Ansicht
Themen-Optionen

Neue Dialogklasse: TColorForm (Alpha-Version)

Ein Thema von alcaeus · begonnen am 29. Mai 2004 · letzter Beitrag vom 2. Jun 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von alcaeus
alcaeus
Registriert seit: 11. Aug 2003
So, ich habe jetzt die Alpha-Version meiner Dialogklasse fertiggestellt: TColorForm. Bitte lest den Beitrag hier bis zum Ende durch, es werden einige Informationen gegeben.

Was ist TColorForm?
TColorForm ist eine Formularklasse, die einen farbigen Hintergrund mit Rand anbietet, und nicht nur einen einfärbigen.

Und wieso der Aufwand für so einen Hintergrund?
Ich benötige das Ganze in meinen Programmen. Der Grund wieso diese Klasse hier landet, ist einfach: Ich habe nicht viele Testmöglichkeiten, und deshalb bitte ich euch, mir Erfahrungsberichte zu geben.

Was ist das Problem mit der Klasse?
Wie bereits erwähnt habe ich nur begrenzte Testmöglichkeiten. Auf meinem WinXP (mit neuem XP-Stil) und D7 Ent lief das Ganze wunderbar.

Wie verwende ich TColorForm?
Die beiden gezippten Dateien müssen einfach ins Projektverzeichnis oder in das Lib-Verzeichnis von Delphi gegeben werden. Im Programm sind folgende Anpassungen nötig:
Die Unit QColorForm muss in das Programm eingebunden werden. Dies muss im interface-Teil geschehen.
Die Klassendeklaration muss angepasst werden:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
wird geändert in:
Delphi-Quellcode:
type
  TForm1 = class(TColorForm)
Zusätzlich muss in den Behandlungsroutinen für OnCreate und OnResize gegebenenfalls noch die Zeile
inherited; am Anfang hinzugefügt werden.

Ich hab alles gemacht, wieso sehe ich nichts?
Dazu werden die in diesen Bereich beschriebenen Methoden benötigt:

procedure DisableBackground;
Mit dieser Prozedur wird der farbige Hintergrund deaktiviert, die Originalfarbe des Formulars wird wiederhergestellt.

procedure DrawBackground;
Diese Prozedur zeichnet den Hintergrund neu.

procedure EnableBackground;
EnableBackground kann verwendet werden, nach einem Aufruf von DisableBackground den farbigen Hintergrund wieder zu aktivieren.

function GetBGColor: TColor;
Diese Funktion liefert die Hintergrundfarbe zurück.

function GetBorderColor: TColor;
Diese Funktion liefert die Randfarbe zurück.

function GetBorderWidth: Integer;
Diese Funktion liefert die Randbreite zurück.

procedure InitBackground(BGColor, BorderColor: TColor; BorderWidth: Integer);
Diese Prozedure initalisiert den Hintergrund. BGColor ist die Hintergrundfarbe, BorderColor die Randfarbe und BorderWidth die Randbreite in Pixel. Es empfiehlt sich, diese Prozedur in der Behandlungsroutine für OnCreate aufzurufen.

procedure SetBGColor(Color: TColor);
Diese Prozedure setzt die Hintergrundfarbe und zeichnet den Hintergrund neu.

procedure SetBorderColor(Color: TColor);
Diese Prozedure setzt die Randfarbe und zeichnet den Hintergrund neu.

procedure SetBorderWidth(Width: Integer);
Diese Prozedure setzt die Randbreite und zeichnet den Hintergrund neu.

Wie sieht das Ganze aus?
Seht auch dazu den angehängten Screenshot an.

Welche Probleme sind bekannt?
Ich weiß dass es beim Zeichnen zu einem Flimmern kommt. Dieses Problem werde ich aber so schnell wie möglich beheben.
Außerdem zählt zur Zeit der Rand auch noch zum Clientbereich des Formulars, das heißt dass Komponenten darübergezeichnet werden können. Auch dieses Problem werde ich versuchen bald loszuwerden.

Da war doch noch was...
Die Klasse ist eine Alpha-Version, weshalb auch beim Start eines Programms, das TColorForm verwendet, eine Infobox angezeigt wird. Sobald die Klasse fertiggestellt ist, werdet ihr sie natürlich gleich als erstes erhalten.

[edit]Sorry, falsche Version hochgeladen.[/sorry]
Miniaturansicht angehängter Grafiken
tcolorform.jpg  
Angehängte Dateien
Dateityp: zip tcolorform_654.zip (4,0 KB, 20x aufgerufen)
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
 
Benutzerbild von alcaeus
alcaeus
 
#2
  Alt 30. Mai 2004, 19:20
[Push]

Und, haben die 4 Herrschaften, die die Klasse heruntergeladen haben schon was dazu zu sagen?
Andreas B.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH
 
#3
  Alt 30. Mai 2004, 19:53
Toll, und warum nicht ein TShape mit Pen.Width = 10 und Pen.Color := clBlue, .Align := alClient und .Brush.Color := clBaluXYZ. Heist, um das gleiche wie du zu erreichen benötigt man ca. 6 Mausklicks mit den Delphi Standard Komponenten.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus
 
#4
  Alt 30. Mai 2004, 19:55
Daran habe ich erstens nicht gedacht, zweitens geht es ja darum, dass man sich im Programm nach Möglichkeit nicht mehr darum kümmern muss, und vor allem keine zusätzliche Komponente auf das Form..
Wie gesagt, es hat vor allem für mich einen Nutzen, wenn jemand einfach die Kompilierbarkeit testen könnte wäre das Spitze...
Andreas B.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni
 
#5
  Alt 30. Mai 2004, 20:19
hoi alcaeus,

gute idee mit der kompo, auch wenn ich sie noch nicht getestet habe. :]

Achja, wenn dir komponente nur für dich einen nutzen hat und sie bei dir auch funzt, brauchen sie andere ja nicht testen oder .

Aber so können sie andere auch mit benutzen, das ist gut
Mario
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus
 
#6
  Alt 30. Mai 2004, 20:22
Zitat von Pseudemys Nelsoni:
Achja, wenn dir komponente nur für dich einen nutzen hat und sie bei dir auch funzt, brauchen sie andere ja nicht testen oder .
Ich sehe den Nutzen hauptsächlich für mich. Wenn jemand anderes die Kompo verwenden will, dann kann er das gerne (sobald sie fertig ist). Ich lasse die Kompo deshalb testen, da ich in Zukunft aus Arbeits- und Studengründen mit verschiedenen Delphi-Versionen auf verschiedenen Rechnern (und deshalb teilweise auch verschiedenem OS) arbeiten muss. Die Kompo sollte da von Anfang an lauffähig sein. Bewährt sie sich in den Tests nicht, so werde ich mir was anderes einfallen lassen (müssen).

Greetz
alcaeus
Andreas B.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni
 
#7
  Alt 30. Mai 2004, 20:23
Das stimmt natürlich
Mario
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus
 
#8
  Alt 30. Mai 2004, 20:28
Der Grund für das Erstellen der Kompo hängt mit dem Chat zusammen, den ich gemacht habe. Da ich auch die Methode mit Pen nicht kannte, habe ich mit zwei TImage-Kompos gearbeitet, bei welchen nur der Rand freiblieb. Das war dann natürlich ungeschickt, das Ganze gab es auf allen Forms und Panels.

@Hansa: Ich plane, die Kompo auf Bilder auszuweiten, das heißt du brauchst nur eine Datei, ein Bild in einer Imagelist oder irgendwas in der Art anzugeben, der Rest wird für dich erledigt.

Greetz
alcaeus
Andreas B.
  Mit Zitat antworten Zitat
Nicodius

 
Delphi 2006 Architect
 
#9
  Alt 1. Jun 2004, 06:13
pen ist der rand

das weißt du jetzt eh ... und was machst du jetzt machst es mit deiner oder mit den "normalen" methoden
Nico Müller
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus
 
#10
  Alt 1. Jun 2004, 06:16
Ich machs natürlich mit meiner Methode, ich schreibe eine Zeile zusätzlich, und ändere eine Vorgängerklasse, und schon hat sich die Sache erledigt. IMHO ist das viel bequemer, als noch eine Kompo auf dem Formular liegen zu haben, das war es auch, was mich an der alten Methode gestört hat und schließlich auch dazu gebracht hat, diese Klasse hier zu schreiben.
Zusätzlich arbeite ich noch an einer ähnlichen Nachfolgerklasse für TPanel.

Greetz
alcaeus
Andreas B.
  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 09:53 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