Wyśrodkowanie tekstu w edit

0

Witam!

Da się wyśrodkowaćtekst w edicie ??

Pozdrawiam!

0

Jasne że sie da!
Zastosuj po prostu styl ES_CENTER przy tworzeniu edita albo po stworzeniu:

VOID CenterEditText(HWND hEdit)
{
  LONG oldEditStyle;
  // Pobieramy styl edita
  oldEditStyle = GetWindowLong(hEdit, GWL_STYLE);
  // Ustawiamy nowy styl edita z wycentrowanym tekstem
  SetWindowLong(hEdit, GWL_STYLE, (LONG)(oldEditStyle | ES_CENTER));
}

Nie testowałem ale chyba działa. Pzdr. :-)

0

Coś nie działa... Tzn działa, ale nie widać efektów - zapewne ja coś zdupcyłem :)

Jeżeli chce sie do niej odwołać to pisze:
CenterEditText(Edit1)</code>??

0
HIOB napisał(a)

Coś nie działa... Tzn działa, ale nie widać efektów - zapewne ja coś zdupcyłem :)

Jeżeli chce sie do niej odwołać to pisze:
CenterEditText(Edit1)</code>??

A ten Edit1 to nie przypadkiem wskaźnik na kontrolkę TEdit??? :>

0

Hmmm. to moje "Edit1" to nazwa tego pola textowego, które chcę wyśrodkować :)

0

No ale czy to:

HWND Edit1;// (WinAPI)

czy

TEdit *Edit1;// (VCL) 

???

PS. Na przyszłość pisz jakiej biblioteki używasz bo tak to nie wiadomo...

0

Używam "VCL.h"...

0

Heh no właśnie.... :-) Spróbuj

CenterEditText(Edit1->Handle);

Od razu mówię, że w VCL'u ze zmianami stylów w ten sposób bywa różnie.

0

Kurde i to samo! Kompiluje sie, ale text nie jest wyśrodkowany!

0

Najpierw usuń styl: ES_LEFT a potem ustaw ES_CENTER

0
-=mAkAbrAs=- napisał(a)

Najpierw usuń styl: ES_LEFT a potem ustaw ES_CENTER

#define ES_LEFT             0x0000L

Nie bardzo jest co usuwać ;)

0

0x666 :D rzeczywiście, tu akurat nie trzeba.

To może ustaw ES_CENTER przed pokazaniem edita. I tak właściwie dlaczego nie zrobisz tego w edytorze zasobów? Bo nie zależy Ci chyba na zmianie położenia tekstu podczas działania programu.

0

Mam takie pytanie: Działa to u któregoś z Was ??

0

Środkowanie jak najbardziej działa - tyle, że ja w WinAPI pisze.

0

Jestem początkujący wiec moze cos zle robie!

Mozesz mi napisac jak i gdzie mam wywolac ta funkcje?? //moja bibliotek VCL

0

No właśnie ja nie używam VCL. Jeśli kod podany przez "mario1" nie działa to pewnie coś źle robisz, ale nie wiem co. Sprawdź czy podajesz dobre HWND rodzica Edita.. nie wiem.
A jak ten Edit jest tworzony? Dynamicznie? W edytorze zasobów?

eee to:
Hmmm. to moje "Edit1" to nazwa tego pola textowego, które chcę wyśrodkować
znaczy, że nie podajesz ID kontrolki tylko NAZWĘ?? Chociaż nie wiem czy to by przeszło..

0

A skad mam wziac id kontrolki??

0

Najpierw napisz jak tworzysz tę kontrolkę?

Jeśli edytorem zasobów to popatrz dokładnie, musi gdzieś tam być ID - u mnie jest np: IDC_EDIT, w pliku .RC, a zdefiniowany w pliku .RH jako np:

#define IDC_EDIT 101
0

Hmmm rysuje sobie tego edita!

I albo mam niedowład oczu albo nie widze nigdzie zadnego id ani niczego podobnego! Przeszukałem wszystkie pliki!

//---------------------------------------------------------------------------

#ifndef Ustawienia_BuforowH
#define Ustawienia_BuforowH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm3 : public TForm
{
__published:	// IDE-managed Components
        TEdit *Edit1;
        TEdit *Edit2;
        TEdit *Edit3;
        TLabel *Label1;
        TLabel *Label2;
        TLabel *Label3;
        TButton *Button1;
        TButton *Button2;
        TLabel *Label4;
        TLabel *Label5;
        TLabel *Label6;
        TEdit *Edit4;
        TLabel *Label7;
        TLabel *Label8;
        void __fastcall Edit1Change(TObject *Sender);
        void __fastcall Edit2Change(TObject *Sender);
        void __fastcall Edit3Change(TObject *Sender);
        void __fastcall Button2Click(TObject *Sender);
        void __fastcall Button1Click(TObject *Sender);
        void __fastcall Edit4Change(TObject *Sender);
        void __fastcall Edit1KeyPress(TObject *Sender, char &Key);
        void __fastcall FormCreate(TObject *Sender);

private:	// User declarations
        void __fastcall CreateParams(TCreateParams& Params);                    //Blokowanie zamykania okna - "krzyżykiem" i "ALT" + "F4"

public:		// User declarations
        __fastcall TForm3(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm3 *Form3;
//---------------------------------------------------------------------------
#endif
I dalej:

TForm3 *Form3;
//---------------------------------------------------------------------------

__fastcall TForm3::TForm3(TComponent* Owner)
: TForm(Owner)
{
}

//---------------------------------------------------------------------------
void __fastcall Sprawdz_Edit(TEdit &Edit)
{
if(Edit.Text == "")
{
Edit.Text = 0;
}
}

//---------------------------------------------------------------------------
void __fastcall TForm3::Edit1KeyPress(TObject *Sender, char &Key)
{
if((Key != '9') & (Key != '8') & (Key != '7') & (Key != '6') & (Key != '5') & (Key != '4') & (Key != '3') & (Key != '2') & (Key != '1') & (Key != '0') & (Key != 8))
{
Beep();
Key = 0;
}
}
//-------------------------------------------------------------------------

void __fastcall TForm3::CreateParams(TCreateParams& Params) //Blokowanie zamykania okna - "krzyżykiem" i "ALT" + "F4"
{
TForm::CreateParams(Params);
Params.WindowClass.style |= CS_NOCLOSE;
}
//---------------------------------------------------------------------------

void __fastcall TForm3::Edit1Change(TObject *Sender)
{
Button1->Enabled = true;
}

//---------------------------------------------------------------------------
void __fastcall TForm3::Edit2Change(TObject *Sender)
{
Button1->Enabled = true;
}
//---------------------------------------------------------------------------

void __fastcall TForm3::Edit3Change(TObject *Sender)
{
Button1->Enabled = true;
}
//---------------------------------------------------------------------------

void __fastcall TForm3::Edit4Change(TObject *Sender)
{
Button1->Enabled = true;
}
//---------------------------------------------------------------------------

void __fastcall TForm3::Button2Click(TObject *Sender)
{
Form1->Enabled = true;
Form3->Visible = false;
}
//---------------------------------------------------------------------------

void __fastcall TForm3::Button1Click(TObject *Sender)
{
Button1->Enabled = false;
Sprawdz_Edit(*Edit1);
Sprawdz_Edit(*Edit2);
Sprawdz_Edit(*Edit3);
Sprawdz_Edit(*Edit4);

Form2->Bufor_We = StrToInt(Edit1->Text);
Form2->Bufor_Wy = StrToInt(Edit2->Text);
Form1->Timer2->Interval = StrToInt(Edit3->Text);
Form1->Timer3->Interval = StrToInt(Edit4->Text);

/*delete Form2->Bufor_Wejsciowy;
delete Form2->Bufor_Wyjsciowy;
Form2->Bufor_Wejsciowy = new char[Form2->Bufor_We];
Form2->Bufor_Wyjsciowy = new char[Form2->Bufor_Wy]; */

}
//---------------------------------------------------------------------------


Tak przy okazji to moze ktos wie jak skrocic ten warunek:

if((Key != '9') & (Key != '8') & (Key != '7') & (Key != '6') & (Key != '5') & (Key != '4') & (Key != '3') & (Key != '2') & (Key != '1') & (Key != '0') & (Key != 8))

0

O czym wy tu gadacie :-D Przecież idea programowania w VCL'u zupełnie różni się od programowania w czystym WinAPI [!!!] Tu nie ma zasobów takiej formie jak w plikach RC.

Prawdopodobnie będziesz musiał zrobić nową kontrolkę pochodną od TCustomEdit i z przeładowaną metodą CreateParams.

0

Dziękuje Wszystkim za cenne wskazówki [browar]

Rezygnuje z wysrodkowania tesktu :p
Jezeli natomiast ktos potrafilby mi w przyszlosci pomoc bardzo chetnie wyslucham jego rad :)

Pozdrawiam!

0
0x666 napisał(a)

Prawdopodobnie będziesz musiał zrobić nową kontrolkę pochodną od TCustomEdit i z przeładowaną metodą CreateParams.

A ja polecam TMemo z wlasciwoscia Alignment=taCenter ;)

0
othello napisał(a)

A ja polecam TMemo z wlasciwoscia Alignment=taCenter ;)

Heh faktycznie ;-P Z drugiej strony dziwne, że dla tego wyśrodkowania textu/wielolinijkowości zrobili oddzielny komponent. W sumie mogliby to wpakować do TEdit - TMemo jest pochodną TCustomEdit.

1 użytkowników online, w tym zalogowanych: 0, gości: 1