deci...am o problema... am o componenta de tip TRichEdit (RichEdit1), deschid un document in ea (cu ajutorul la la OpenDialog1)...problema e ca nu stiu cum pot face ca DirectoryListBox1 sa imi arate folderul din care provine acel document ( + vreau ca DirectoryListBox1 sa nu poata fi modificat de catre utilizator)... sper ca m-am exprimat pe intelesul tuturor..... ma ajuta cineva?
_______________________________________ I am not as stupid as I look...
#2
Shocker Super Moderator Din: localhost
Postari: 2084
Shocker...daca ai putea sa ma mai ajuti la ceva...
deci, ma facut chestia asta :
procedure TForm1.FormCreate(Sender: TObject); var i:integer; nou:TMenuItem; begin for i:=1 to 50 do begin nou:=TMenuItem.Create(Size1); nou.Caption:=IntToStr(i); Size1.Add(nou); end; for i:=1 to screen.Fonts.Count-1 do begin nou:=TMenuItem.Create(Font2); nou.Caption:=Screen.Fonts[i]; Font2.Add(nou); end; end;
iar acu' bineinteles k vreau sa pot face ceva cu acele submeniuri create...si banuiesc k a le lua pe fiecare in parte nu e cea mai buna solutie
vreau k atunci cand dau clic pe un submeniu sa se selecteze un font sau o marime (dupa caz)...dar asta se intelege...
multumesc anticipat...
_______________________________________ I am not as stupid as I look...
#5
Shocker Super Moderator Din: localhost
Postari: 2084
Invata si tu sa aliniezi mai frumos codul ca sa il intelegi mai usor :P
In fine, uite aici cum se face:
Code:
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
nou:TMenuItem;
begin
for i:=1 to 50 do
begin
nou:=TMenuItem.Create(Size1);
nou.Caption:=IntToStr(i);
Size1.items.Add(nou);
end;
for i:=1 to screen.Fonts.Count-1 do
begin
nou:=TMenuItem.Create(Font2);
nou.Caption:=Screen.Fonts[i];
nou.OnClick:=AlegeFont;
Font2.items.Add(nou);
end;
Dupa cum vezi avem linia:
Code:
nou.OnClick:=AlegeFont;
deci la fiecare submeniu adaugat la click pe el [mai exact cand se lanseaza evenimentul OnClick] se va executa AlegeFont [o procedura intermediara]:
Code:
procedure TForm1.AlegeFont(Sender: TObject);
begin
blabla.Font.Name:=TMenuItem(Sender).Caption;
end;
Iti dai seama ca in loc de 'blabla' pui tu numele obiectului la care vrei sa schimbi fontul.
Insa ar mai fi ceva, dar nu chiar asa important: nu toate numele de la Screen.Fonts se potrivesc cu ce ar trebui sa bagi la Font.name:= De exemplu Screen.Fonts iti arata si Microsoft Sans Serif, insa numele fontului care trebuie sa il folosesti la .Font.name este MS Sans Serif. In fine, nu e chiar asa de grav, se intampla la putine fonturi asta.
Ai putea sa iei lista de fonturi si altcumva, dar se complica lucrurile... Faci o functie:
Code:
function enumerareFonturi(var LogFont: TLogFont; var TextMetric: TTextMetric; FontType: Integer; Data: Pointer): Integer; stdcall;
begin
TStringList(Data).Add(LogFont.lfFaceName);
Result := 1;
end;
iar acum FormCreate ar arata cam asa:
Code:
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
nou:TMenuItem;
h:hwnd;
a:TStringList;
tmp:string;
begin
for i:=1 to 50 do
begin
nou:=TMenuItem.Create(Size1);
nou.Caption:=IntToStr(i);
Size1.items.Add(nou);
end;
a:=TStringList.Create;
h:=GetDC(0);
EnumFonts(h,nil,@enumerareFonturi,Pointer(a));
ReleaseDC(0,h);
for i:=0 to a.Count-1 do
begin
nou:=TMenuItem.Create(Font2);
nou.Caption:=a[i];
nou.OnClick:=AlegeFont;
Font2.items.Add(nou);
end;
a.Free;
end;
ar cam fi o buba din moment ce submeniurile sunt create la executie nu prea am acces la ele...am pus si o poza... (Font2) la asta ma refer... daca gresesc...ai ceva idei?
faza in delphi – poza de ystenly, in S.O.S. · 46.8KB
_______________________________________ I am not as stupid as I look...
#8
Shocker Super Moderator Din: localhost
Postari: 2084
Zi-mi exact ce vrei sa faci ca nu am inteles mare lucru.
Ce 'acces' vrei la ele si ce vrei sa vad eu in poza aia? Ca nu inteleg
deci...daca am inteles bine ce ai zis tu mai sus...la fiecare submeniu al lui Font2 trebuie ca la OnClick sa fie pusa procedure AlegeFont...nu? si (daca am interpretat bine mesajul tau) trebuie sa am acces la fiecare submeniu al lui Font2 ca sa fac treaba aia... dar submeniurile se creaza numai in momentul crearii formei...asa ca nu am acces la ele... poate am inteles gresit,dar... am mai pus o poza marita...sa te uiti la meniul Font2...
faza in delphi – poza de ystenly, in S.O.S. · 36.9KB
_______________________________________ I am not as stupid as I look...
#10
Shocker Super Moderator Din: localhost
Postari: 2084
Pff... ti-am explicat cum sta faza. Se atribuie automat procedura AlegeFont la OnClick la fiecare submeniu. Uite unde:
Shocker a scris:
procedure TForm1.FormCreate(Sender: TObject); var i:integer; nou:TMenuItem; begin for i:=1 to 50 do begin nou:=TMenuItem.Create(Size1); nou.Caption:=IntToStr(i); Size1.items.Add(nou); end;
for i:=1 to screen.Fonts.Count-1 do begin nou:=TMenuItem.Create(Font2); nou.Caption:=Screen.Fonts[i]; nou.OnClick:=AlegeFont; Font2.items.Add(nou); end;
Si ti-am aratat si procedura AlegeFont:
Code:
procedure TForm1.AlegeFont(Sender: TObject);
begin
blabla.Font.Name:=TMenuItem(Sender).Caption;
end;
Deci la click pe fiecare submeniu se executa AlegeFont si se atribuie lui blabla.font.name [blabla.Font.Name:=TMenuItem(Sender).Caption;] fontul rezultat din textul de pe submeniul pe care ai dat click [blabla.Font.Name:=TMenuItem(Sender).Caption;]
Sa iti explic cum e cu blabla.Font.Name:=TMenuItem(Sender).Caption; poate nu intelegi... blabla e un Label. Prin blabla.Font.Name:=... schimbam fontul textului label-ului respectiv. Deci dupa := ar trebui sa punem un nume de font. dupa cum stii xxx.caption e textul care se afla pe un obiect [de exemplu textul de la submeniul xxx]
Asa... acum sa ne intoarcem la TMenuItem(Sender).Caption; Dupa cum vezi procedura AlegeFont e declarata asa: procedure AlegeFont(Sender: TObject); [deci are un parametru, si anume Sender care reprezinta obiectul pe care ai apasat ca s-a se execute procedura asta] Deci in cazul nostru sender va fi unul dintre acele submeniuri, asa ca ii zicem compilatorului ca e submeniu[TMenuItem] prin TMenuItem(Sender), apoi punem .Caption ca sa ne spuna textul de pe submeniul pe care am apasat mai inainte...
as vrea sa transform un text selectat (dintr-un richedit) in upper case sau in lower case... ma poate ajuta cinava? ...pana acum am reusit sa transform tot textul...dar nu pot transforma ce am selectat
shocker as fi recunoscator daca m-ai ajuta...sau oricine altcineva care se pricepe...
_______________________________________ I am not as stupid as I look...
#13
Shocker Super Moderator Din: localhost
Postari: 2084
cat de prost pot sa fiu...era vorba de un list box...am uitat sa ii modific numele si aveam o idee fix sa folosesc "lbLog"...penal.....
si inca ceva... de curand am incept sa invat despre servere si clienti (ma refer in delphi)...si incerc sa fac o cerere de la client la server pentru a imi trimite o poza... comanda la server e cam asa:
procedure TForm1.IdTCPServer1TIdCommandHandler2Command( ASender: TIdCommand); var numefisier:string; fstream:TFileStream; begin if Assigned(ASender.Params) then numefisier:=HTTPDecode(ASender.Params[0]); if not FileExists(numefisier) then begin ASender.Response.Text:='File not found'; lbLog.Items.Add ('File not found: '+numefisier); raise EIdTCPServerError.Create('File not found: '+numefisier); end else begin fstream:=TFileStream.Create(numefisier,fmOpenRead); try ASender.Thread.Connection.WriteStream(fstream, True, True); lblog.Items.Add('File returned: '+numefisier+' ('+IntToStr(fStream.Size)+') '); finally fstream.Free; end; end; end;
asta e eroarea : [Error] Unit1.pas(45): Undeclared identifier: 'HTTPDecode' si la client bineinteles : HTTPEncode....
Faza cu Decode si Encode am gasit-o intr-o carte......si e ceva nou pt mine..
poti sa ma ajuti?
_______________________________________ I am not as stupid as I look...
#20
Shocker Super Moderator Din: localhost
Postari: 2084
HTTPEncode/Decode sunt niste functii declarate in unit-ul HTTPApp, asa ca tot ce trebuie sa faci e sa te duci sus la uses si sa pui si HTTPApp in lista cu unit-urile folosite. Exemplu:
Code:
unit blabla;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, HTTPApp;
shoker am si eu o intrebare .... ca sa ajungi la nivelul asta la care esti tu .. ma refer la limbaje de programare cam cati ani ai invatzat .. de cat timp faci chestia asta !!!
_______________________________________ Try to be the best !
#23
Shocker Super Moderator Din: localhost
Postari: 2084
Vic a scris:
shoker am si eu o intrebare .... ca sa ajungi la nivelul asta la care esti tu .. ma refer la limbaje de programare cam cati ani ai invatzat .. de cat timp faci chestia asta !!!
Pai fac asta pe cont propriu [fara profesori, fara blabla, doar cu frate-miu cate-odata] de vreo 3 ani