Autor Beitrag
ololo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: Do 24.01.08 13:13 
folgender code:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
begin  //aussehen - background
   //alt wegmachen
   Form1.Canvas.Pen.Color := clFuchsia;
   Form1.Canvas.Brush.Color := clFuchsia;
   Form1.Canvas.Rectangle(0,0,Form1.Width,Form1.Height);  //das hier macht er nicht...
   //neumachen
   Form1.Canvas.Brush.Color := farbe;
   Form1.Canvas.Pen.Width := 1;
   Form1.Canvas.Pen.Color := clBlack;
   Form1.Canvas.roundrect (004014573333);
end;


das hab ich in ner eigenen procedure stehen, wo farbe als TColor übermittelt wird...
ich versuche damit zu bezwecken, dass das bisherige canvas auf der form komplett "übermalt" wird, mit transparent, weil ich clFuchsia als transparente farbe auf der form hab...

nur leider ignoriert er das "leere" zeichnen einfach

hoffe auf hilfe

greetz
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Do 24.01.08 13:19 
Wo rufst Du denn die Prozedure auf, doch nicht etwa in OnFormCreate? wenn ja verlagere mal den Aufruf nach OnFormPaint :!:

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1335
Erhaltene Danke: 118

Win 10
RIO, CE, Lazarus
BeitragVerfasst: Do 24.01.08 14:07 
Rectangle ist nicht der Befehl der Wahl! Damit zeichnest du nur einen Rahmen.
Das was du brauchst ist FillRect!

Die Hilfe ist dein Freund :wink: ... da hättest du das auch gefunden.

_________________
Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Do 24.01.08 14:15 
user profile iconSinspin hat folgendes geschrieben:
Rectangle ist nicht der Befehl der Wahl! Damit zeichnest du nur einen Rahmen.
Das was du brauchst ist FillRect!

Die Hilfe ist dein Freund :wink: ... da hättest du das auch gefunden.
Du irrst, mit Rectangle wird ein gefülltes Rechteck gezeichnet, wenn Brush.Color gesetzt und Brush.Style<>bsClear ist, probiere es aus!

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
ololo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: Do 24.01.08 18:53 
hi

das es im oncreate nich funzt, weiß ich auch :D

ich benutz die procedure im onpaint und noch woanders wärhend das prog läuft...

mein prog hat unten n menü, und oben was zum anzeigen...
wenn mein prog den fokus verliert, soll halt nurnoch das menü dasein, und der rest oben ausgeblendet werden:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
procedure zeichnen(farbe : TColor);
begin
   if not klein then  //kleinmachen, also obenren teil ausblenden/wegmachen
      begin
         Form1.Panel2.Color := farbe;
         Form1.ShellListView1.Color := farbe;

         begin  //aussehen - background
            //alt wegmachen
            Form1.Canvas.Pen.Color := clFuchsia;
            Form1.Canvas.Brush.Color := clFuchsia;
            Form1.Canvas.Rectangle(0,0,Form1.Width,Form1.Height);  //das hier macht er nicht...
            //neumachen
            Form1.Canvas.Brush.Color := farbe;
            Form1.Canvas.Pen.Width := 1;
            Form1.Canvas.Pen.Color := clBlack;
            Form1.Canvas.roundrect (004014573333);
         end;
      end;

   if klein then  //großmachen, also oberen teil anzeigen
      begin
         Form1.Panel2.Color := farbe;
         Form1.ShellListView1.Color := farbe;

         begin  //aussehen - background
            //alt wegmachen  hier unnötig, da das untere canvas ja "übermalt" wird...
            //neumachen
            Form1.Canvas.Brush.Color := farbe;
            Form1.Canvas.roundrect (03764014573333);
         end;
      end;
end;


nur is halt das problem, das er beim kleinamchen das canvas von "großen" einfach da lässt, und nich wegmacht...
und das sieht nich richtig aus, wenn dann oben nch n kasten is...^^

das ganze soll ja eig nur nen shape ersetzten, weil ich bei dem ja leider nich die größe der rundung angeben kann, die is ja nach der große des shapes festgelegt...

greetz
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Do 24.01.08 19:52 
(a)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
if Klein then
  begin
  end
else
  begin
  end;

(b) Form.Canvas übermalt keine Komponenten, die musst du mit Visible ein-/ausblenden
zBsp.Panel1.Visible := klein; // bzw  not Klein

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
ololo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: Do 24.01.08 20:57 
die komponenten blende ich in nem anderen teil aus, wenns klein wird, bleibt halt nur noch der rahmen vom canvas über, hab ma n pic im anhang...

wie man an den rotmarkierten stellen sieht, malt er das canvas vom kleinmachen auch... der andere teil wird überlagert, aber der obere rahmen, der quasi wie n kopfstehendes u aussieht, der soll halt noch weg...

edit:
in der mitte is n panel, gut getroffen kroko :D
Einloggen, um Attachments anzusehen!
ololo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: Fr 25.01.08 20:24 
habs jetzt anders (auch wenns unschön is^^) gelöst:

10 shapes:
4kreise für die eckenrundungsgrößen meiner wahl
2rechtecke um die fläche zu füllen ohne rand
4shapes mit der breite/höhe 1 für rand...

is zwar nich schön und ne menge code die imma auf die richtige größe zu bringen
aba was solls, es erfüllt seinen zweck...^^

greetz