Witam!
Da się wyśrodkowaćtekst w edicie ??
Pozdrawiam!
Witam!
Da się wyśrodkowaćtekst w edicie ??
Pozdrawiam!
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. :-)
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>??
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??? :>
Hmmm. to moje "Edit1" to nazwa tego pola textowego, które chcę wyśrodkować :)
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...
Używam "VCL.h"...
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.
Kurde i to samo! Kompiluje sie, ale text nie jest wyśrodkowany!
Najpierw usuń styl: ES_LEFT a potem ustaw ES_CENTER
-=mAkAbrAs=- napisał(a)
Najpierw usuń styl: ES_LEFT a potem ustaw ES_CENTER
#define ES_LEFT 0x0000L
Nie bardzo jest co usuwać ;)
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.
Mam takie pytanie: Działa to u któregoś z Was ??
Środkowanie jak najbardziej działa - tyle, że ja w WinAPI pisze.
Jestem początkujący wiec moze cos zle robie!
Mozesz mi napisac jak i gdzie mam wywolac ta funkcje?? //moja bibliotek VCL
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..
A skad mam wziac id kontrolki??
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
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))
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.
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!
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 ;)
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.