![]() |
eigene IDE schreiben, (wie) geht sowas?
Da ich in meinen 2 letzten Fragen schon ein paar mehr Informationen mit eigenen Klassen / Komponenten gemacht habe, aber mein eigentliches Problem noch nicht gelöst ist, möchte ich einmal schreiben was ich eigentlich für ein Programm schreiben möchte.
Ich möchte so eine Art "eigene IDE" schreiben, die grob gesehen ähnlich wie die von Delphi funktioniert. Das ganze soll ein Programm für eine Visualisierung werden. Da die Idee daran geht, erst eigene Komponenten schreiben die verschiedene Eigenschaften haben und dann die spätere Bedienoberfläche wie in der IDE selbst "zusammenklicken". Damit es noch deutlicher wird: Es soll eine Visualisierungsoberfläche mit Schaltern, Tastern, Texten usw werden, die mit einem vordefinierten Standardaussehen oder einem individuellem Bild belegbar ist. Also Drag&Drop und Copy&Paste ist demnach in so einer IDE Pflicht. Aber wie geht man bei sowas vor? Eigenen Klassen schreiben, muss ich ja. Aber jeder "Typ" soll ja individuell werden. Die Darstellung wird in der WMPaint Methode festgelegt. Aber wie ist es möglich das, Copy&Paste funktioniert, automatische Hilfslinien bei Drag&Drop wie in RAD Studio 2007, wo wird da was festgelegt in den Komponenten oder in der Form? Und woher weis so eine IDE immer wieviel Komponenten vorhanden sind und welche Gruppiert sind? Vielleicht ist meine Frage auch ein wenig seltsam, aber meine Idee ist da, Vorlagen habe ich genug aber das Konzept und der logische Aufbau da mangelt es noch. Aber evtl gibt es doch Antworten darauf. |
Re: eigene IDE schreiben, (wie) geht sowas?
Hallo,
das ganze ist kein ganz einfaches Thema. Aber ein paar Erfaqhrungswerte: 1. Die Verschiedenen Klassen/Objekte können zur Auswahl in "TPaletteButtons" hinterlegt werden. Die Klasse kann in "Data" des Items hinterlegt werden. Die Symbole für eigene Komponenten sollten am besten aus einer Resource-Datei kommen. Diese kann z.B. mit rc.exe erstellt werden. 2. Beim Anklick auf ein Formular muss TPaletteButtons abgefragt werden, ob etwas aktiviert wurde. Wenn ja, entsprechendes Objekt erzeugen. Beim Anlegen Owner und Parent setzen. Klasse kommt aus Item von TPaletteButtons. 3. Beim Bewegen von Objekten muss MouseDown, MouseMove usw. abgefangen werden. Am besten "ApplicationMessage" benutzen und das Objekt bzw. den aktuellen Status zu prüfen. Alternativ kann dies auch im Objekt hinterlegt werden (ist aber sehr Aufwendig). 4. Für Copy/Paste gibt es ObjectBinaryToText und ObjectTextToBinary (Unit Classes). Damit die Bezüge richtig gesetzt werden, muss ggf. TReader abgeleitet/angepasst werden. Wie gesagt, nicht ganz einfach und sehr aufwendig. Hoffe es hilft :-) |
Re: eigene IDE schreiben, (wie) geht sowas?
schon mal an vsshell gedacht.
microsoft hat seine komplette Visual Studio IDE freigegeben. damit kannst du deine eigene sachen einpluggen. jedoch bedeutet das ein framwork wechsel von win32 auf .net. copy&paste , drag&drop, docking usw. ist dort alles schon drinn. jedoch was anderes hat delphi.prism auch nicht gemacht. jedoch könntest du mit delphi.prism (wenns dann die tage raus kommt) deiner sprache pascal weiterleben. vsshell heist nicht du hast eine visual studio sondern nutzt eine nackte IDE und machst damit was du willst. mehr infos findest du auch unter: ![]() und eine menge mit tante google gruss daniel (magin) |
Re: eigene IDE schreiben, (wie) geht sowas?
Es ist in der Tat ein schwieriges Thema, da viele Faktoren die Programmierung beeinflussen und vieles bedacht werden muss. Mit .NET habe ich absolut keine Ahnung. Aber was "Thomas Horstmann" geschrieben hat, muss ich mir mal anschauen, Danke!
|
Re: eigene IDE schreiben, (wie) geht sowas?
Hallo hronny,
oki hat unter ![]() ![]() Vielleicht hilft Dir da etwas als Anregung. In jedem Fall musst Du die benötigten Klassen registrieren, damit sie zur Laufzeit anhand des Klassennamens erzeugt werden können. Eine Copy&Paste habe ich nicht realisiert. Man kann meine Komonenten einfach aus einer Palette auf den Designer ziehen und dort positionieren. Technisch gesehen muss dabei die Drag-Funktion des Paletten-Objekts beendet werden, ein neues Objekt (der gleichen Klasse) erzeugt und auf den Designer gesetzt werden und dann Drag&Drop dieses neuen Objektes gestartet werden. Der Anwender merkt von diesen Änderungen natürlich nichts. Alle meine Designer-Objekte habe ich von einer gemeinsamen Klasse abgeleitet, die u.a. das Verschieben auf dem Designer ermöglicht. Außerdem gibt es eine Eigenschaft, die angibt, ob die Komponente aktiviert oder Teil eines aktivierten Blockes ist. Diese Eigenschaften veranlassen bei Änderungen die Komponenten über ihre Settermethoden direkt, sich selbst neu zu zeichnen. Insgesamt ist das alles eine gehörige Bastelei! stahli |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:59 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