AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Flexible Form von Windowskomponenten
Thema durchsuchen
Ansicht
Themen-Optionen

Flexible Form von Windowskomponenten

Ein Thema von Silenoz84 · begonnen am 14. Mai 2004 · letzter Beitrag vom 14. Mai 2004
Antwort Antwort
Silenoz84

Registriert seit: 11. Mai 2004
Ort: Frankfurt
18 Beiträge
 
#1

Flexible Form von Windowskomponenten

  Alt 14. Mai 2004, 15:35
Hey LeutZ,

also das mit der flexiblen Form eines Windowsfensters (nicht dieses typisch rechteckige langweilige Design) hab ich ja inzwischen hinbekommen, allerdings wäre es jetz noch super praktisch, wenn ich das auch noch mit allen anderen Objekten, haupsächlich grafikdarstellende Komponenten wie ImageBox oder PaintBox, aber auch gruppierenden Objekten wie Panel oder GroupBox, anstellen könnte (nieder mit den Standarts, viva la revolution

D.h. die Grenzen von z.B. ner Imagebox sind nicht durch'n Rechteck definiert sondern durch en Polygon oder nem Kreis usw. Hab das schon mit der API Funktion SetWindowRgn probiert und ne Region an das Handle des Canvas dieser Objekte übergeben, das hat die entsprechenden Objekte aber herzlich wenig gebockt, sprich es ist gar nix passiert!

Irgendjemand ne Idee wie ich das anstelle???

*greetZ* Sile


P.S.: Ich war mir nicht sicher ob das jetzt in die VCL Kategorie oder doch in die API gehört... also wenn ich da jetz was falsch gemacht habe (@Admins) bitte ich um Verzeihung, verschiebt dementsprechend einfach den Thread (wenn das möglich ist)...
I bin einfach mit der g'sammt Situation unzufrieden...
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#2

Re: Flexible Form von Windowskomponenten

  Alt 14. Mai 2004, 16:23
du musst die region ,mit CreatePolygonRgn oder CreatePolyPolygonRgn erzeugen.
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Silenoz84

Registriert seit: 11. Mai 2004
Ort: Frankfurt
18 Beiträge
 
#3

Re: Flexible Form von Windowskomponenten

  Alt 14. Mai 2004, 16:32
Jep, damit erstellt man eine Region... meine Frage war aber wie ich besagte Region an ne Komponente übergebe, um ihr eine neue, schmucke Form zu verpassen - wider diesem 0815-standart "rechteck-flair"!
I bin einfach mit der g'sammt Situation unzufrieden...
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Flexible Form von Windowskomponenten

  Alt 14. Mai 2004, 16:47
Sollte doch mit
SetWindowRgn funktionieren oder lieg ich da falsch?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#5

Re: Flexible Form von Windowskomponenten

  Alt 14. Mai 2004, 17:03
Delphi-Quellcode:
if region <> 0 then
  setWindowRgn(Handle, region, true);
wie der Sir schon beschrieben hat.
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Silenoz84

Registriert seit: 11. Mai 2004
Ort: Frankfurt
18 Beiträge
 
#6

Re: Flexible Form von Windowskomponenten

  Alt 14. Mai 2004, 17:36
Ok ok... is ja in ordnung, habt ja zum teil recht is nur so, das ne PaintBox und en Image nicht direkt ein eigenes Handle haben (irgendwo ja logisch) und man da über das Canvas dran muss...
aaaaaaaaaaber wenn ich das nun mache (also mit ner PaintBox und ner gezeichneten Grafik drinne) klappt garnix und ich habe irgendwie das Gefühl Delphi lacht mich deswegen aus (entschuldigt meine subtile Paranoia, verdammtes Delphi *fluch*)

Also so sieht meine Codezeile aus:

Code:
...
var region: THandle;
begin
   region:= CreateEllipticRgn(0,0,100,100); //irgendne Region (is ja wurscht erstmal)

   setWindowRgn(pbxArea.Canvas.handle, region, true);
...

//edit: hatte das SetWindowRgn vorher nicht mit z.B. ner GroupBox ausprobiert, aber damit klappt des aufjedenfall... also werde ich dann evt. über den Umweg gehen (nur wenn alle Stricke reißen), dass ich einfach ne Paintbox in nem Panel mit der entsprechenden Region dastelle (wäre aber sehr sehr sehr unelegant *schüttel*)
I bin einfach mit der g'sammt Situation unzufrieden...
  Mit Zitat antworten Zitat
Tryer

Registriert seit: 16. Aug 2003
200 Beiträge
 
#7

Re: Flexible Form von Windowskomponenten

  Alt 14. Mai 2004, 18:44
Die ID eines Device-Context (HDC) ist halt nunmal kein Fensterhandle (HWND), daher kann die Funktion SetWindowRgn() auch nichts mit "Canvas.Handle" anfangen.
Ein "Handle" im allgemeinen ist halt nur ein "Griff", innerhalb einer Liste aller Device-Contexte oder innerhalb einer Liste aller Fenster halt eine eindeutige ID um das gewünschte Objekt zu identifizieren und mit ihm zu arbeiten. Alle Handles werden halt als 32Bit-Wert gespeichert, dadurch entsteht der Eindruck vermeindlicher Kompatibilität.

Wenn Du nicht alle Controls die von TGaphicControl stammen und ohne Windowhandle daherkommen nochmal ableiten und deren Paint-/Mousehandler überschrieben willst dann ist wohl die Lösung mit dem Panel der einzig akzeptable Weg.

MfG,
Tryer
  Mit Zitat antworten Zitat
Silenoz84

Registriert seit: 11. Mai 2004
Ort: Frankfurt
18 Beiträge
 
#8

Re: Flexible Form von Windowskomponenten

  Alt 14. Mai 2004, 18:57
Und wieder mal danke

Aber hast recht hab echt kein Bock alle entsprechenden Komponenten neu abzuleiten... da geh ich halt den Weg übers Panel (ich werd's einfach keinem verraten, so bleibt mir Spot und Hohn erspart *g*).

Hab aber noch nich so janz jeblickt wat das denn damit auf sich hat, dass nich alle Komponenten en Handle haben, weil wie du schon gesagt hast und wie ich mal in nem Tutorial von Luckie(?) gelesen habe, sind Handles ne Art eindeutige Adresse von Objekten, die Windows braucht um zwischen selbigen hin und her zu managen?!
I bin einfach mit der g'sammt Situation unzufrieden...
  Mit Zitat antworten Zitat
Tryer

Registriert seit: 16. Aug 2003
200 Beiträge
 
#9

Re: Flexible Form von Windowskomponenten

  Alt 14. Mai 2004, 19:02
Gehst Du zum Glaser, drückst ihm nen Drucker in die Hand und sagst "Mach mir da nen Aquarium raus, hat ja die gleiche Seriennummer wie die Glasscheibe dahinten also muss das gehen" ?

Handles die vom System verwaltet werden haben nur die Objekte bei denen das System sich über mehrere Poszesse hinweg um lle kümmern muss, z.B. Dateien (wegen dem Festplattenzugriff) oder Fenster (um Regionen auf dem Bildschirm und Botschaften zu verwalten).
  Mit Zitat antworten Zitat
Silenoz84

Registriert seit: 11. Mai 2004
Ort: Frankfurt
18 Beiträge
 
#10

Re: Flexible Form von Windowskomponenten

  Alt 14. Mai 2004, 20:04
Zitat:
Gehst Du zum Glaser, drückst ihm nen Drucker in die Hand und sagst "Mach mir da nen Aquarium raus, hat ja die gleiche Seriennummer wie die Glasscheibe dahinten also muss das gehen" ?
Sehr schöne und treffende Analogie

Hab's zwar immer noch nicht so wirklich verstanden, aber is auch nicht Aufgabe dieses Threads, das Thema komplett zu durschauen übersteigt wohl sowieso bei weitem meinen Horizont

Naja egal, hauptsache ich kann irgednwie mit umgehen...

also *thx & greetZ* Sile
I bin einfach mit der g'sammt Situation unzufrieden...
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:22 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