![]() |
Runde, ovale, diagonale, geschwungene oder sonstwie Buttons
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo DPler!
Eigentlich wollt ich nur Wissen, ob meine Idee funktionieren würde, und heraus kam diese Komponente... Man kann in den Ressourcen die Bitmaps hinterlegen, welche dann als Buttons dargestellt werden. Auf Deutsch gesagt, man zeichnet die Buttons, und Kompo setzt es um. Also das ist jetzt schwierig zu beschreiben, am besten, Ihr guckt Euch den Screenshot mal an. Geschrieben ursprünglich mit Delphi 2, die Komponente zum Download ist jetzt aber für Delphi 5.0+ Neu in V1.5:
Neu in V1.4:
V1.3:
V1.2:
V1.1b:
Hint: F: Ist doch eine Standard Eigenschaft? A: Jein, ich habe aus der Eigenschaft eine StringList gemacht. Die 0. Zeile bleibt leer, die restlichen Zeilen stehen für den jeweiligen Button. ResStandard, .., ResTouchZones Hier können die Ressourcennamen eingegeben werden, die dann geladen werden. Ich weiß, das ist noch nicht das Gewünschte... Viel Spaß damit! PS: Wäre schön, wenn Ihr einen Screenshot posten würdet, was ihr damit gemacht habt. Zitat:
Edit: Demo Exe erneuert. |
Re: Runde, eckige, geschwungene oder sonstwie Buttons
Fehler: RoundButton.res nicht gefunden :gruebel:
|
Re: Runde, eckige, geschwungene oder sonstwie Buttons
Ja die muß man erst machen...
Aber ich könnte mal meine als Beispiel hinzufügen? |
Re: Runde, eckige, geschwungene oder sonstwie Buttons
kannst du machen
|
Re: Runde, eckige, diagonale, geschwungene oder sonstwie But
Hmm, wo hab ich die bloß wieder hingespeichert? :gruebel:
Ach da is sie ja, hier bitte, oben zu finden. :zwinker: |
Re: Runde, eckige, diagonale, geschwungene oder sonstwie But
wenn man nen button nach dem klick loslässt, ist die Maus doch immernoch drauf...
trotzdem wird der button icht mehr so markiert |
Re: Runde, eckige, diagonale, geschwungene oder sonstwie But
Zitat:
Außerdem bin ich mir nicht sicher, ob Scanline in diesem Falle tatsächlich schneller ist als Canvas.Pixels :? |
Re: Runde, eckige, diagonale, geschwungene oder sonstwie But
Funktioniert soweit ganz gut. Der Hit wäre noch wenn man die Komponente einfach auf der Form zieht die eigenen Grafiken einbinden könnte also für ButtonActive,ButtonInctive,ButtonPush und so weiter und die ASnzahl der Schaltflächen bestimmen könnte :mrgreen:
Ich weiß ich bin unverschämt :mrgreen: |
Re: Runde, eckige, diagonale, geschwungene oder sonstwie But
Zitat:
Canvas.Pixels (Gähn) ist vieeeel langsamer. Zitat:
Zitat:
|
Re: Runde, eckige, diagonale, geschwungene oder sonstwie But
Zitat:
Er meint, dass der Button grün wird, wenn man die Maus drüberhält, beim Klicken grau wird und nach dem Loslassen grau bleibt, obwohl er wieder grün werden sollte, da die Maus ja immer noch drüber ist. Florian |
Re: Runde, eckige, diagonale, geschwungene oder sonstwie But
Zitat:
Die Delphigemeinde dem "Sunlight7" Hypnotisiert und eintrichtert "du bist ein RoundButton-Komponentenschreiber" "du bist wirklich ein RoundButton-Komponentenschreiber" wenn du aufwachst schreibst du nur an dieser Komponente bis zur Vollendung :mrgreen: |
Re: Runde, eckige, diagonale, geschwungene oder sonstwie But
*Von der Leitung runter Steige*
Ich habs nacher noch kapiert. Problem behoben und hochgeladen (.pas). Edit: @newuser01 Wenn ich mal Zeit habe mach ich das noch, mal sehen, derweil mußt Du noch mit den Ressourcen auskommen. |
Re: Runde, eckige, diagonale, geschwungene oder sonstwie But
Zitat:
Delphi-Quellcode:
Eine Alternative wäre der TypeCast mit TRGBTriple aus der Unit Windows.
function GetPixel (Bitmap: TBitmap; const x, y: Integer): LongInt;
var sl : PByteArray; idx : Integer; begin sl := Bitmap.ScanLine[y]; idx := x * 3; Result := RGB(sl[idx + 2], sl[idx + 1], sl[idx]); end; Gruß Hawkeye |
Re: Runde, eckige, diagonale, geschwungene oder sonstwie But
Das Problem hab ich schön gelöst, aber Danke:
Delphi-Quellcode:
Zu komplex für den Compiler?
function GetPixel(Bitmap:TBitmap; const x, y:Integer):LongInt;
var sl:PByteArray; begin sl:=Bitmap.ScanLine[y]; Result:=(sl[(x * 3)+2])+(sl[(x * 3)+1] shl 8)+(sl[(x * 3)+0] shl 16); end; Der Delphi 2.0 Compiler kann das aber :gruebel: Der Fehler wurde erst später eingebaut, und ich wollte eigentlich wissen, ob der Fehler bei den neueren Versionen immer noch da ist. |
Re: Runde, eckige, diagonale, geschwungene oder sonstwie But
Unter D2005 PE lässt sich der Code einwandfrei compilieren ...
|
Re: Runde, eckige, diagonale, geschwungene oder sonstwie But
Danke, also doch kein Fall für die Delphi-Bug Reports.
|
Re: Runde, eckige, diagonale, geschwungene oder sonstwie But
Ich habe bei den VCL Komponenten die "JvgButton1" Kompo gefunden diese Komponente hat alles was man dazu braucht eine Schaltfläche so zu erstellen wie sie "Sunlight7" und "Dino" Programmiert haben. In dieser Komponente läd man einfach die entsprechenden Bilder wie sie oben schon gezeigt wurden rein also z.b für ButtonActive,ButtonInactive,ButtonMask,ButtonPushe d und hat dann diese Schaltfläache. Wenn man nun ein gesamte runde Schaltfläche haben will die aufgeteilt ist dann legt man einfach mehrere "JvgButtons" mit den entsprechenden Bildern aneinander das funktioniert bestens und sieht genau so aus wie die Komponente von "Sunlight7"
|
Re: Runde, eckige, diagonale, geschwungene oder sonstwie But
Und das sagst Du mir erst jetzt??? :roll:
|
Re: Runde, eckige, diagonale, geschwungene oder sonstwie But
Zitat:
Gruß Hawkeye |
Re: Runde, eckige, diagonale, geschwungene oder sonstwie But
nach dem loslassen bleibt der btton nicht grau, sondern wird blau... sollte aber rot sein, weil die maus noch drauf ist
genauer ehts nicht, ausser mit nem video |
Re: Runde, eckige, diagonale, geschwungene oder sonstwie But
Mir ist auch grad sowas ähnliches passiert.
Ich hatte ein Array mit Records und ein Array mit Pointern auf diese Records und musste jetzt beide kopieren, allerdings sollten die Pointer des zweiten Arrays auf die Records des kopierten ersten zeigen. Da mir da keine andere Lösung eingefallen ist, habe ich das mit ein paar Pointeroperationen hingebogen. Ich bekam zwar keinen internen Fehler, aber ein paar Invalid Pointer Ops und hab dann die Optimierung ausgeschaltet, jetzt gehts. |
Re: Runde, eckige, diagonale, geschwungene oder sonstwie But
Liste der Anhänge anzeigen (Anzahl: 1)
Sorry "Sunlight7" aber hab ich auch erst vorhin gefunden die Komponente zur Entschädigung ein Bildchen :mrgreen:
|
Re: Runde, eckige, diagonale, geschwungene oder sonstwie But
@Hawkeye219 Danke nochmals, das wollt' ich wissen.
Haben die Borlandler Glück gehabt, das Sie den Fehler schon ausgebügelt haben. @dino, sollte schon funktionieren, kannste ausprobieren (nur die .pas hab ich neu hochgeladen). :zwinker: Edit: @newuser01 Da ich ohnehin nur eigens gemachte Kompo's verwende ist das nicht so schlimm, jetzt muß ich mir nur noch ein Programm ausdenken, wo ich die Kompo dann einsetzte. Aber mir gefällt meine Kompo besser (prahl), weil man nur eine braucht und mit einer case Anweisung die geklickten Buttons leicht aufsplitten kann. |
Re: Runde, eckige, diagonale, geschwungene oder sonstwie But
Zitat:
|
Re: Runde, eckige, diagonale, geschwungene oder sonstwie But
Zitat:
Ich finde bei meinen Kompos immer wieder was zum erweitern :mrgreen: Aber ich werde Dich über Neuheiten Informieren :zwinker: |
Re: Runde, eckige, diagonale, geschwungene oder sonstwie But
Liste der Anhänge anzeigen (Anzahl: 1)
Sunlight7 wie machst du die Grafiken :gruebel: ich bekomme das in Photoshop einfach nicht hin sieht nich ma 2D mäßig aus :mrgreen:
Ich sag ja bin unfähig zu Zeichnen :( Ich wollte die Schaltflächen so wie deine machen nur mit 5 Schaltflächen also 4 stück so und und eine runde in der Mitte (Play oben, Stop in der Mitte , Pause unten, Next rechts und Back links. Vielleicht kannste mir darin ja noch helfen. Die gesamte Schaltfläche darf nich größer sein wie der Platz der dafür vorgesehen ist (siehe Bild) und Farbe der Schaltflächen sollte das dunkle blau sein (siehe Bild) mir würden die reinen Schaltflächen genügen Beschriftung oder dergleichen bekomm ich denke mal noch selber hin :mrgreen: |
Re: Runde, eckige, diagonale, geschwungene oder sonstwie But
Schick mir das Player.jpg und das was Du gemacht hast mal via PN.
Aber BITTE im .png Format, ich hab vom Provider so nen dämlichen Speed Manager vorgeschalten, der auch wenn er deaktivieert ist bmp, jpg und gif so komprimiert, das man nix mehr erkennt. :evil: Oder wenn Du kein png kannst, was ich nicht glaube, dann mach ein zip draus. Edit: Hab ich vorhin übersehen: Zitat:
Und dann auch noch in meinem Thread Werbung für die Konkurenz machen... :shock: Also Leute gibt's :roll: Ts ts ts :mrgreen: :mrgreen: :mrgreen: [/Ironisch] |
Re: Runde, ovale, diagonale, geschwungene oder sonstwie Butt
Kurz zur Info: Paar kleinigkeiten verbessert: Details oben :zwinker:
|
Re: Runde, ovale, diagonale, geschwungene oder sonstwie Butt
Zitat:
:mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: |
Re: Runde, ovale, diagonale, geschwungene oder sonstwie Butt
Ja, da hatte ich gerade meine "lustigen 5 Minuten", und da hab ich nen kleinen Spaß ins Demo eingebaut. :lol:
Aber das bin halt typisch ich, für solche Späße bin ich schon bekannt. :???: |
Re: Runde, ovale, diagonale, geschwungene oder sonstwie Butt
hab noch ein gemeinsames(oder emeinsamen??? ka) Bug gefunden:
dein und mein Programm haben beide das Problem. dass wenn man ganz schnell über die Buttons geht, dass dann unter umständen ein Button aktiviert bleibt, weil die Maus sich, da sie so schnell bewegt wurde ja offiziel nicht wegbewet sondern einfach verschwunden ist die Maus ist mit einem Sprung vom Button dahingesprungen, wo sie nicht mehr kontrolliert wird... wie kann man das ändern? ich will z.B. nen Timer bestimmen, der jedesmal überprüft, wo sich die maus befindet, aber im gegensatz zu onmousemove wird nem timer nicht die x,y koordinaten der maus übergeben... |
Re: Runde, ovale, diagonale, geschwungene oder sonstwie Butt
Der Fehler kommt bei TGraphicControl, so wie Du in Beschrieben hast öfters vor.
Wenn ich ehrlich bin, hatte ich noch keine Zeit, Deinen Quellcode anzusehen :( Das mit dem Timer mache ich normalerweise bei meinen Kompos, aber weil ich diese als Open-Source veröffentlicht habe, hab ich das gelassen, weol ich das für eine schlechte programmierweise halte. Was besserers ist mir noch nicht eingefallen, man könnte ggf. MouseCapture verwenden, aber ob das ideal ist und bei ohne Handle Fenster funkt hab ich noch nicht probiert. PS: Du muß bei dem Timer die MousePos abfragen und auf das gewünschte Control umrechnen. |
Re: Runde, ovale, diagonale, geschwungene oder sonstwie Butt
ich habe immernoch nicht verstanden, darum frag ich nochmal verienfacht:
wie kann ich z.B. ner Timerprozedur die Mauskoordinaten übergeben? |
Timer in Kompo
Zitat:
Hast Du ne jetzt ne Kompo, nutzt Du meine oder hast das nur so auf einem Formaular? Ich werde das mal in die Kompo einbauen, dann kannst Du Dir das ansehen. Das sind dann 2 Fliegen mit einer Klappe (Nicht das Du ne Fliege wärst). |
Re: Runde, ovale, diagonale, geschwungene oder sonstwie Butt
wofür bruache ich deine Kompo?
nenne mich alltmodisch, aber ich hätte wenn dann gerne ein Projekt, wo das drin vorkommt... wenn der timer die Koordiaten erhalten will, muss sie jemand eben, nur solche sachen wie onmousemove oder irgendwa onmouse klappt nicht, da die maus sich nicht auf der Form befindet und somit auch keine koordinatenüberreichende anweisungen macht |
Re: Runde, ovale, diagonale, geschwungene oder sonstwie Butt
Update hochgeladen... siehe oben.
Zitat:
Zitat:
Kompos haben halt den Vorteil, das man Sie nur einmal Programmieren muß, und sie dann leichter in mehreren Projekten verwenden kann. Wegen den Timer: 1. Gucke Dir die neue Kompo an, oder 2. Gib in Deinem Projekt einen "Reset", sobald das Formular einen MouseMove feststellt. 2teres funkt nicht immer, wenn die Form sehr klein ist. |
Re: Runde, ovale, diagonale, geschwungene oder sonstwie Butt
2. funktioniert auch nicht, wenn die buttons am rand sind, weil man dann ja auch schafft davonzuspringen...
also allgemein nochmal die frage: schhafft mans die koordinaten zu kriegen, auch wennn die maus nicht auf der Form ist?(oder zumindest zu erkennen, dass die Maus nicht auf der Form ist) bisher erkenne ich den Standpunkt der Maus nur, wenn ch eine taste drücke, oder die maus bewee sonst nicht... |
Re: Runde, ovale, diagonale, geschwungene oder sonstwie Butt
Hast Du Dir die neue Kompo nicht angesehen?
Genauso, wie es da drin steht kannst Du es auch auf einer Form machen. |
Re: Runde, ovale, diagonale, geschwungene oder sonstwie Butt
ne noch nicht, aber wenn du schon sagst, dass es auf einer kleinen Form immernoch vorkommt, weiss ich ja, dass du bei form1 onmousemove den reset durchführst, was aber nichts bringt, solange die maus ausserhalb der Form rumläuft...
also entweder, wir holen uns die mausosition irgendwie anders, oder wir schummeln, indem wir die form screengröße geben, es aber so aussehen lassen, als sei sie kleiner, indem wir das Fensterdesign normal darstellen und darumherrum den hintergrund zeigen... kann man in dem Fall bei Klick in den äusseren bereich dem hintergrund übergeben?(dass man per rechtsklick auf die form das sieht, wenn man auf den desktop klickt |
Re: Runde, ovale, diagonale, geschwungene oder sonstwie Butt
Sieh Dir zuerst die Komponente an ...
Da ist die 1. Option mit Timer drin Die 2. würde ohne gehen, aber wie gesagt, funkt net immer. Edit: Falls Du die Exe probiert hast, die hab ich nicht neu hoch geladen, die hat den Fehler noch. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:02 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