Autor Beitrag
Quivadis
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 314

UBUNTU 9.04
D2005 PERS, JAVA, D7 Pers.
BeitragVerfasst: Do 08.09.05 11:03 
Hallo Freunde,

ich möchte in einem Image die Linke obere Ecke sperren. Dort habe ich einen Button.

Wie muss die Abfrage in Delphi ausehen, das ich nur den Bereich des Buttons sperre, und keinen RAnd im gesamten Image Erzeuge?

Ich habe da jetzt irgenwie in Denkproblem. Die Aussenränder habe ich schon gesperrt.

danke für eure

Hilfe

Quivadis

_________________
Wissen ist macht, nichts wissen macht auch nichts. ODER: Wer nichts weis, kann nichts vergessen.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 08.09.05 12:16 
Moin!

Erklär doch mal, was du mit "sperren" meinst. :wink:

cu
Narses
Quivadis Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 314

UBUNTU 9.04
D2005 PERS, JAVA, D7 Pers.
BeitragVerfasst: Do 08.09.05 12:33 
Ich meine das so, das der Mauszeiger der eine Linie malt dort anstösst und nicht weiter malt. Sprich die Linie soll nicht plötzlich unter dem Button kommen, also eine Grenze im Zeichenbereich des Stiftes.

Jetzt etwas verständlicher.

Mir geht es nur um die Abfrage in der If-Anweisung. Diese bekomme ich nicht auf die Reihe.

_________________
Wissen ist macht, nichts wissen macht auch nichts. ODER: Wer nichts weis, kann nichts vergessen.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 08.09.05 12:40 
Moin!

Ungefähr so?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
if ( (MouseX >= Button1.Left) and
     (MouseX <  (Button1.Left +Button1.Width)) and
     (MouseY >= Button1.Top) and
     (MouseY <  (Button1.Top +Button1.Height)) ) then
  ShowMessage('Maus im Button-Bereich');

cu
Narses
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Do 08.09.05 12:43 
denk mal du machst das mit dem onmousedown ereignis oder vergleichbarem :)

ausblenden Delphi-Quelltext
1:
if ((x > 50) and (y < 20)) or ((x < 50) and (y > 20)) or ((x > 50) and (y > 20)) then // zeichne					


im bereich vom bild mit der breite 50 und höhe 20 kann man jetzt nicht mehr zeichnen

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit


Zuletzt bearbeitet von uall@ogc am Do 08.09.05 13:50, insgesamt 1-mal bearbeitet
Quivadis Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 314

UBUNTU 9.04
D2005 PERS, JAVA, D7 Pers.
BeitragVerfasst: Do 08.09.05 12:54 
Mit deinem Code erzeuge ich doch denn erwähnten Rand im gesamten Image.
Ich möchte aber das nur der Bereich des Buttons weg ist, sprich den äusseren Rand des Image verändern und dann den Bereich des Buttons, oben links rausschneide, bildlich gesprochen.

Es geht nicht um die Stellen, wo die Abfrage rein muss. Die weiss ich ja, die sind inimagemove und onimagedown.

Dort Frage ich ja schon die Aussengrenzen ab.

_________________
Wissen ist macht, nichts wissen macht auch nichts. ODER: Wer nichts weis, kann nichts vergessen.
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Do 08.09.05 13:13 
das ist schon so richtig wie ich das gepostet habe

man kann in einem block von 50*20 oben links nichts mehr zeichnen

wenn du dir die abfragen anschaust wirste merken das ich das in 3 abschnitte aufgeteilt habe (or)

einmal den bereich rechts vom button
einmal den teil unten dem button
und einmal den teil unten rechts vom button

wenn der jetzt mittme im bild liegt musst du halt noch mehr "beschreiben" oder du beschreibst den bereich vom button und setzt nen not davor

ausblenden Delphi-Quelltext
1:
2:
3:
4:
if (x > button1.left) and (x < button1.left+button1.width) and (y > button1.top) and (y < button1.top+button1.width) then
  // nicht zeichnen
  else
  // zeichnen


bzw

ausblenden Delphi-Quelltext
1:
2:
3:
4:
if not ((x > button1.left) and (x < button1.left+button1.width) and (y > button1.top) and (y < button1.top+button1.width)) then
  // zeichnen
  else
  // nicht zeichnen


aber so einfach geht das glaub ich nicht weil button.left von der form ausgeht, aber x bzw y vom bild vom linken oberen bildpunkt ausgeht.

dann musst du halt noch bishcne mehr rechnen aber vom prinzip her dürfte es stimmen

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
Quivadis Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 314

UBUNTU 9.04
D2005 PERS, JAVA, D7 Pers.
BeitragVerfasst: Do 08.09.05 13:27 
Das mit der Aufteilung habe ich schon gemerkt @uall@ogc.

meinte mit Rand mehr den quelltext von @Narses.

@uall@ogc der Weg war/ist schon ungefähr das was ich suche. Habe deinen Quelltext mit meinen eigenen Bereich eingefügt. Bin gerade noch am Testen.

_________________
Wissen ist macht, nichts wissen macht auch nichts. ODER: Wer nichts weis, kann nichts vergessen.
Quivadis Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 314

UBUNTU 9.04
D2005 PERS, JAVA, D7 Pers.
BeitragVerfasst: Do 08.09.05 13:48 
@uall@ogc: Danke dir dein 1.Code war auch richtig, hatte nur in meiner langen IF-Abfrage noch ein Paar Klammern vergessen. Jetzt funktioniert es.



Danke auch an alle anderen die mir geholfen haben.

_________________
Wissen ist macht, nichts wissen macht auch nichts. ODER: Wer nichts weis, kann nichts vergessen.