Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Form nicht rechteckig (https://www.delphipraxis.net/135484-form-nicht-rechteckig.html)

KahPee 15. Jun 2009 14:31

Re: Form nicht rechteckig
 
Zitat:

Zitat von DeddyH
Prinzipiell ist die Syntax die gleiche, allerdings gibt es ein paar Erweiterungen.

Wenn ich diese Erweiterungen von Anfang an nicht kenne gibt das dann Problem für mich oder kann ich einfach wie vorher weitermachen?
Zitat:

außer dass sich in TDE keine Komponenten installieren lassen (zur Laufzeit nutzen aber schon).
TDE? Ich steh gerade auf dem schlauch was das genau ist, wobei ich mir das glaube ich denken kann. Reichen die mitgelieferten Komponenten aus? Bzw. sind die vielen (vorsicht ironie) Komponenten von Delphi 4 vorhanden, sodass ich keine Möglichkeiten bei einem Wechsel einbüße?
Was ganz anderes: Gibt es eine Möglichkeit delphi 4 programme mit TurboDelphi weiter zuschreiben oder muss man die komplett neu schreiben?

Vielen Dank schon mal..

Edit:
Zitat:

Zitat von Daniel G
:gruebel: Was hat denn die Version vom User turboPASCAL mit TurboDelphi zu tun? Hast du dir den Link überhaupt angesehen?

Hast recht, das hat mich iritiert, dachte das das durch TurboDelphi geproggt wurde. allerdings habe ich den Link angeguckt. wenn ich die Projektdatei versuche zu öffnen bekomme ich aber immer den Fehler "ungültiges Streamformat".
Wenn es sinn machen sollte von Delphi 4 zu wechseln welches mir nahegelegt wurde:
Zitat:

Zitat von DeddyH
Woran hakt es denn? Evtl. könntest Du auch über die Verwendung von Turbo Delphi Explorer nachdenken, das ist kostenlos und moderner.

würde ich das abgesehen davon trotzdem in erwägung ziehen

Popov 15. Jun 2009 14:40

Re: Form nicht rechteckig
 
@KahPee

Hat sich das Thema geändert? Ich hab dir doch gerade ein Tool genannt wo du dein Problem in 30 Sekunden erledigen kannst. Willst du jetzt lieber Turbo Pascal programmieren?

KahPee 15. Jun 2009 14:45

Re: Form nicht rechteckig
 
Zitat:

Zitat von Popov
Also ich will mir nicht alles jetzt durchlesen, aber kann es sein, daß du für dein Programmfenster eine Sonderform willst? Ist es das was du meinst?

Wenn ja, dann ist das an für sich nicht schwer, aber hier ein Tool das es ganz einfach macht:

http://www.informatics.no/progvareOF.htm

Lade dir das kleine Tool runter, lade die Grafik die du für deine Sonderform willst und laß daß Tool eine Unit mit einem Code berechnen und schreiben. Diese Unit bindest du in dein Programm ein, führst eine Funktion aus und dein Programm hat eine Sonderform.

Hab nur den Link angesehen, das sieht soweit schon mal ganz gut aus... Vielen Dank dafür.
was muss ich machen beim Einbauen (uses Unit XYZ ist klar, aber was sonst [oder kommt dieses Thema in der Hilfe vor?])?
Das Programm schneidet immer alles Weisse weg richtig?

Popov 15. Jun 2009 14:55

Re: Form nicht rechteckig
 
- GabesOddForm.exe starten
- deine Grafik öffnen (die Bereiche die später nicht sichtbar sein sollen, sollten weiß sein)
- Bild scannen (Menü Image > Scan bitmap)
- Datei UGabesOddForm.pas in deinem Projektordner speichern (Menü File > Save Source...)
- Unit UGabesOddForm unter Uses eintragen
- Prozedur in TForm1.FormCreate aufrufen: CreateOddWindow(form1.Handle, False);
- Fertig

KahPee 15. Jun 2009 15:10

Re: Form nicht rechteckig
 
Vielen Dank werde das mal zuHause austesten. Da hat jemand saubere arbeit geleistet...

SimStar001 15. Jun 2009 15:21

Re: Form nicht rechteckig
 
Das ist ein echt Tolle Tool!

turboPASCAL 15. Jun 2009 17:26

Re: Form nicht rechteckig
 
Liste der Anhänge anzeigen (Anzahl: 2)
Ich hatte das ganze mal folgendermassen gelöst, das Teil ist auch noch Win9x kompatibel:

Delphi-Quellcode:
//...

function TForm1.SetWndRegionFromImg(Bmp: TBitmap; TransparentColor: TColor): Boolean;
type
  TTransColState = (trsOn, trsOff);

  TRGBQuadArray = array[WORD] of Cardinal;
  pRGBQuadArray = ^TRGBQuadArray;
var
  TransColState: TTransColState;
  x, y: Integer;
  line: Integer;
  count: Integer;
  rgn, nrgn: THandle;
  pPixelArray: pRGBQuadArray;
begin
  Result := TRUE;

  if Bmp.PixelFormat <> pf32Bit then
    Bmp.PixelFormat := pf32Bit;

  count := 0;
  line := 0;

  rgn := CreateRectRGN(0, 0, 0, 0); // First Init Region
  nrgn := rgn;

  for y := 0 to Bmp.Height - 1 do
  begin
    pPixelArray := Bmp.Scanline[y];
    TransColState := trsOff;
    for x := 0 to Bmp.Width - 1 do
    begin
      if pPixelArray[x] <> COLORREF(TransparentColor) then
      begin
        if TransColState = trsOff then
        begin
          TransColState := trsOn;
          line := x - 1;
          inc(line);
        end;
      end else
      begin
        if TransColState = trsOn then
        begin
          TransColState := trsOff;
          if count < 4096 then
          begin
            nrgn := CreateRectRgn(line, y, x, y + 1);
            CombineRgn(Rgn, Rgn, nRgn, RGN_OR);
            inc(Count);
          end else
          begin
            ShowMessage('Debuginfo: To many Regions. Count of Rgn: '#9 + IntToStr(Count));
            Application.Terminate;
          end;
        end;
      end;
    end;
  end;
  SetWindowRgn(Handle, Rgn, TRUE);
  DeleteObject(Rgn);
  DeleteObject(nRgn);
end;


procedure TForm1.FormCreate(Sender: TObject);
const
  LWA_COLORKEY = 1; // Use crKey as the transparency color.
  LWA_ALPHA = 2; // Use bAlpha to determine the opacity of the layered window..

  USER32DLL = 'user32.dll';
var
  _SetLayeredWindowAttributes: function(hWnd: THandle; TRansparentColor: COLORREF;
    AlphaValue: Byte; Flags: Cardinal): BOOL; stdcall;
var
  hLib: THandle;
begin
  Self.Color := clFuchsia;
  Self.BorderStyle := bsNone;

  if not (Image1.Picture.Graphic is TBitmap) then
  begin
    ShowMessage('Fehler: Image muss ein Bitmap sein !');
    Application.Terminate;
  end;

  hLib := LoadLibrary(USER32DLL);
  @_SetLayeredWindowAttributes := GetProcAddress(hLib, 'SetLayeredWindowAttributes');
  if @_SetLayeredWindowAttributes <> nil then
  begin
    SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED);
    _SetLayeredWindowAttributes(Self.Handle, COLORREF(clFuchsia), 250, LWA_COLORKEY or LWA_ALPHA);
  end
  else
  begin
    // alternative, im falle das es SetLayeredWindowAttributes nicht gibt
    SetWndRegionFromImg(Image1.Picture.Bitmap, clFuchsia);
  end;
  FreeLibrary(hLib);
end;

//...


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:50 Uhr.
Seite 3 von 3     123   

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