Avatar billede mysitesolution Nybegynder
10. december 2002 - 17:17 Der er 15 kommentarer og
1 løsning

Usynlig baggrund på edit box

Hvordan laver man ´baggrunden på en edit box usynlig?

Det skal eventuelt være så den kan være fx 50 % usynlig osv.
Avatar billede slepee Nybegynder
10. december 2002 - 17:50 #1
Hm... kod din egen Control - så kan du evt. sælge den til intet-anene fjolser for 3$ over nettet eller noget! :) Så kan du lave en hel pakke med gennemsigtige controls med både Knapper, CheckBoxe og så videre...
Det kan ikke være så svært... du bruger bare en Standard windows control. Og så koder du en onPaint override event til den.
Jeg har ikke leget med Pascal eller Delphi i 2 år så jeg kan ikke huske lige præcis hvordan, men du kan tihvertifælde gøre det i C/C++ :)
Avatar billede mysitesolution Nybegynder
10. december 2002 - 17:56 #2
hmmm jeg er ikke så god så jeg kan det, men jeg har koden til en usynlig memo box, men ´på den er der nogle markerings problemer :(
Avatar billede hermandsen Juniormester
10. december 2002 - 18:00 #3
Start med det her...

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

const
  //Constants for layered windows
  lwa_Alpha = 2;
  ws_Ex_Layered = $80000;

function SetLayeredWindowAttributes (Wnd: hWnd; crKey: ColorRef; bAlpha: Byte; dwFlags:DWord):
Bool; stdcall; external 'user32.dll';

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetWindowLong(FindWindow('Shell_TrayWnd',nil), gwl_ExStyle, GetWindowLong(FindWindow('Shell_TrayWnd',nil), gwl_ExStyle) or ws_EX_Layered);
  SetLayeredWindowAttributes(FindWindow('Shell_TrayWnd',nil), 0, strtoint(edit1.text), lwa_alpha);
end;

end.
Avatar billede mysitesolution Nybegynder
10. december 2002 - 18:00 #4
kan du lave det som project? og sende det?
Avatar billede hermandsen Juniormester
10. december 2002 - 19:15 #5
Jeg har det problem at min bærbar kun kører Win98, så der er ingen transparant-understøttelse... Sidder lige nu og overfører fra bærbar til stationær og tester mellem dem via VNC (bliver nød til at følge med på den stationæres skærm samtidig)... Meget sjovt! :)

Ovenstående kode gør Taskbar'en (den med start-knappen på) gennemsigtig (skriv et tal i din edit mellem 0 og 255)...

Jeg har nu prøvet med både en knap og en edit, og ind til videre har jeg ikke set noget der virker, kun på en form...

Faldt forresten lige over det her:
http://homepages.borland.com/efg2lab/Graphics/TransparentButton.htm
Avatar billede mysitesolution Nybegynder
10. december 2002 - 19:17 #6
nå ok..prøver at vente på et svar...
Avatar billede hermandsen Juniormester
10. december 2002 - 19:23 #7
Endnu en mulighed var måske denne komponent:
http://www.torry.net/vcl/buttons/msoffice/mtatrnbtn.zip

Det er egentlig lidt snyd, for der er bare tale om en Bevel og en Label, men hva' fanden... Det virker! :)

Personligt tænker jeg ikke alt for meget på det grafiske... Programmet skal virke, og så er det det... Om det så har runde kanter, flotte ikoner eller bare damer, det er knapt så vigtigt! Hvis det endelig skal til, så er det noget man altid tilføjer bagefter! ;)
Avatar billede mysitesolution Nybegynder
10. december 2002 - 19:39 #8
det skulle ikke være en knap, men en edit box
Avatar billede hermandsen Juniormester
10. december 2002 - 19:46 #9
Hehe... Sorry, sover! :)

Ny ide:
Sæt KeyPreveiw til true for din form, og "optag" keystrokes ned i en streng...
Så kan du ellers bare skrive på formen, og evt. smække en bevel rundt om for at gøre den pæn! ;)

Prøver lige at lave et eksempel, men prøv også lidt selv! ;)
Avatar billede mysitesolution Nybegynder
10. december 2002 - 19:57 #10
kode...
Avatar billede hermandsen Juniormester
10. december 2002 - 20:01 #11
There you go:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
  TForm1 = class(TForm)
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormCreate(Sender: TObject);
  private
    S: String;
    Areal: TRect;
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  case Key of
    #08: S := Copy(S, 0, Length(S)-1); //Backspace
    #13: S := S;                      //Der findes ikke Enter i en edit
    else S := S + Key;                //Smider den næste key på
  end;
  Canvas.Brush.Color := Color;
  Canvas.Rectangle(Areal);
  Canvas.TextRect(Areal, 0, 0, S);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  KeyPreview := True;
  Areal := Rect(0,0,75,16);
end;

end.

//hermandsen
Avatar billede hermandsen Juniormester
10. december 2002 - 20:04 #12
Du får lige en optimeret udgave! ;)

unit Unit1;

interface

uses
  Windows, Classes, Forms;

type
  TForm1 = class(TForm)
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
  private
    S: String;
    Areal: TRect;
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  case Key of
    #08: S := Copy(S, 0, Length(S)-1); //Backspace
    #13: S := S;                      //Der findes ikke Enter i en edit
    else S := S + Key;                //Smider den næste key på
  end;
  Paint;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Canvas.Brush.Color := Color;
  KeyPreview := True;
  Areal := Rect(0,0,75,16);
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
  Canvas.Rectangle(Areal);
  Canvas.TextRect(Areal, 0, 0, S);
end;

end.
Avatar billede mysitesolution Nybegynder
11. december 2002 - 21:28 #13
lukker...
Avatar billede hermandsen Juniormester
12. december 2002 - 11:53 #14
Hvad var der galt med mit svar?
Avatar billede mysitesolution Nybegynder
12. december 2002 - 19:46 #15
det virker ikke på billeder
Avatar billede hermandsen Juniormester
13. december 2002 - 07:55 #16
Jo da... Koden skal bare skrives lidt om! :)

Hvis du vil rode med det, så kan du f.eks. ha' et billede i en variabel til formen... Når så du skriver/sletter tekst, så skal du bare bruge Canvas.BrushCopy til at fjerne det slettede så det bliver til billede igen!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester