/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Component til oversætter
Fra : Ulrik Vadstrup


Dato : 15-02-04 21:49

Hejsa folkens - jeg har lidt af et projekt igang.

Jeg vil lave en component der kan slå en oversættelse op i en DB.

Meningen er at den skal droppes på en form, så skal den runtime slå alle
TCaption, TCheckBox osv. op i dabasen og hente oversættelsen.

Jeg har tænkt mig at tæller alle componenterne på "owner" til min component.
og så bruge en lang case sætning

Hvordan udfører jeg det rent praktisk i min component kode.

Noget alla

For i := 0 to Owner.components.count do
if Owner.component[i] is TPanel then
begin
end;

osv osv.....

Hvordan er den rigtige syntax - når min component skal kunne placers på
TPanel, TForm, TTabpage osv.

Findes der måske allerede noget ligende som freeware.

--
Ulrik Vadstrup
Send gratis SMS med din PC
http://www.blackend.dk - se under download nederst.



 
 
Toke Eskildsen (15-02-2004)
Kommentar
Fra : Toke Eskildsen


Dato : 15-02-04 22:33

Ulrik Vadstrup wrote:

> Jeg vil lave en component der kan slå en oversættelse op i en DB.

> Findes der måske allerede noget ligende som freeware.

Jeps: http://dybdahl.dk/dxgettext/

Jeg bruger det selv til http://ekot.dk/JPEGCrops/ .

Programmet fungerer ved at udtrække en liste over alle visuelle
komponenter. Man tilføjer oversættelsen til listen, som enten kaldes
fra programmet eller pakkes sammen med det. Det betyder også at
eksterne oversættere ikke behøver at have Delphi installeret for at
afprøve oversættelser.
--
Toke Eskildsen - http://ekot.dk/

Jørgen Højrup Christ~ (17-02-2004)
Kommentar
Fra : Jørgen Højrup Christ~


Dato : 17-02-04 17:50

Hej

Problemet er vel ikke større end at du løber alle komponenter på formen
igennem og bruges deres tag værdi til at hente en ord fra en database - det
har jeg selv brugt i nogen af mine projekter som skulle oversættes til henv.
dansk og engelsk.

"Ulrik Vadstrup" <blackend@FJERNMIGblackend.dk> skrev i en meddelelse
news:c0olqn$2m64$1@news.cybercity.dk...
> Hejsa folkens - jeg har lidt af et projekt igang.
>
> Jeg vil lave en component der kan slå en oversættelse op i en DB.
>
> Meningen er at den skal droppes på en form, så skal den runtime slå alle
> TCaption, TCheckBox osv. op i dabasen og hente oversættelsen.
>
> Jeg har tænkt mig at tæller alle componenterne på "owner" til min
component.
> og så bruge en lang case sætning
>
> Hvordan udfører jeg det rent praktisk i min component kode.
>
> Noget alla
>
> For i := 0 to Owner.components.count do
> if Owner.component[i] is TPanel then
> begin
> end;
>
> osv osv.....
>
> Hvordan er den rigtige syntax - når min component skal kunne placers på
> TPanel, TForm, TTabpage osv.
>
> Findes der måske allerede noget ligende som freeware.
>
> --
> Ulrik Vadstrup
> Send gratis SMS med din PC
> http://www.blackend.dk - se under download nederst.
>
>


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.586 / Virus Database: 371 - Release Date: 12-02-2004



Thor (18-02-2004)
Kommentar
Fra : Thor


Dato : 18-02-04 22:24

Hej Ulrik

Jeg bruger selv din metode, - her er basis delen af den.
Oversættelser ligger i en database tabel.

mvh Thomas Riedel



function ValStr(compname, phrase : string) : string;
var s : string;
begin
s := dmdb.sqlfunc('select '+natlan+', name from languages where name =
'+quotedstr(compname));
if dmdb.query1.fields[1].asstring = '' then
begin
dmdb.dosql('Insert into languages (name, '+
natlan+') values ('+
quotedstr(compname)+', '+
quotedstr(phrase)+')' );
end else
if s = '' then
begin
dmdb.dosql('update languages set '+
natlan+' = '+
quotedstr(phrase)+' where '+
'name = '+quotedstr(compname))
end;
if s = '' then s := phrase;
dmdb.dosql('update languages set '+
' ok = 1'+
' where '+
' name = '+quotedstr(compname));

result := s;

end;


procedure setLanguage;
var i,j,k : integer;
c : tcomponent;
f : tform;
begin
natlan := frmsetup.lblanguage.caption;
counter := 0;
for i := 0 to application.Componentcount-1 do
if application.components[i] is tform then
with application.components[i] as tform do
begin
caption := valstr(name, caption);
f := tform(application.components[i]);
for j := 0 to f.componentcount-1 do
begin
c := components[j];
{if c.tag = 100 then exit;
if c.tag=0 then c.tag := 100;}
if c is tdbgrid then
with tdbgrid(c) do
hint := valstr(F.name+'.'+c.Name, hint);

if c is tgroupbox then
with c as tgroupbox do
begin
caption := valstr(f.Name+'.'+c.Name, caption);
end else
if c is tradiogroup then
with c as tradiogroup do
begin
caption := valstr(f.Name+'.'+c.Name, caption);
for k := 0 to items.count-1 do
items[k] := valstr(f.Name+'.'+c.Name+inttostr(k), items[k]);
end else
if c is tbitbtn then
with c as tbitbtn do
begin
caption := valstr(f.Name+'.'+c.Name, caption);
hint := valstr(f.Name+'.'+c.Name+'.hint', hint);
end else
if c is tbutton then
with c as tbutton do
begin
caption := valstr(f.Name+'.'+c.Name, caption);
hint := valstr(f.Name+'.'+c.Name+'.hint', hint);
end else
if c is tedit then
with c as tedit do
begin
hint := valstr(f.Name+'.'+c.Name+'.hint', hint);
end else
if c is tspeedbutton then
with c as tspeedbutton do
begin
caption := valstr(f.Name+'.'+c.Name, caption);
hint := valstr(f.Name+'.'+c.Name+'.hint', hint);
end else
if c is tcheckbox then
with c as tcheckbox do
begin
caption := valstr(f.Name+'.'+c.Name, caption);
end else
if c is tmenuitem then
with c as tmenuitem do
begin
if tag = 0 then
begin
caption := valstr(f.Name+'.'+c.Name, caption);
hint := valstr(f.Name+'.'+c.Name+'.hint', hint);
end;
end else
if c is ttabset then
with c as ttabset do
begin
for k := 0 to tabs.count-1 do
tabs[k] := valstr(f.Name+'.'+c.Name+inttostr(k), tabs[k]);
hint := valstr(f.Name+'.'+c.Name+'.hint', hint);
end else
if c is ttable then
with c as ttable do
begin
if tag <> 1001 then
for k := 0 to FieldCount -1 do
with fields[k] do
if visible then
displaylabel := valstr(f.Name+'.'+fields[k].Name, displaylabel);
end else
if c is tquery then
with c as tquery do
begin
for k := 0 to FieldCount -1 do
with fields[k] do
if visible then
displaylabel := valstr(f.Name+'.'+fields[k].Name, displaylabel);
end else
if c is tlabel then
with c as tlabel do
begin
if tag = 0 then
//IF (CAPTION <> '')
// AND NOT (CAPTION[1] IN ['0'..'9'])
caption := valstr(f.Name+'.'+c.Name, caption);
if (f = frmsetup) and (c = frmsetup.label1) then
c := c;
end else
if c is tqrlabel then
with c as tqrlabel do
begin
caption := valstr(f.Name+'.'+c.Name, caption);
{caption := v(caption);}
end;
if c is tdbnavigator then
with c as tdbnavigator do
begin
hint := valstr(f.Name+'.'+c.Name+'hint', hint);
for k := 0 to hints.count-1 do
hints[k] := valstr(f.Name+'.'+c.Name+'h'+inttostr(k), hints[k]);
{caption := v(caption);}
end;
end;
end;
end;



"Ulrik Vadstrup" <blackend@FJERNMIGblackend.dk> skrev i en meddelelse
news:c0olqn$2m64$1@news.cybercity.dk...
> Hejsa folkens - jeg har lidt af et projekt igang.
>
> Jeg vil lave en component der kan slå en oversættelse op i en DB.
>
> Meningen er at den skal droppes på en form, så skal den runtime slå alle
> TCaption, TCheckBox osv. op i dabasen og hente oversættelsen.
>
> Jeg har tænkt mig at tæller alle componenterne på "owner" til min
component.
> og så bruge en lang case sætning
>
> Hvordan udfører jeg det rent praktisk i min component kode.
>
> Noget alla
>
> For i := 0 to Owner.components.count do
> if Owner.component[i] is TPanel then
> begin
> end;
>
> osv osv.....
>
> Hvordan er den rigtige syntax - når min component skal kunne placers på
> TPanel, TForm, TTabpage osv.
>
> Findes der måske allerede noget ligende som freeware.
>
> --
> Ulrik Vadstrup
> Send gratis SMS med din PC
> http://www.blackend.dk - se under download nederst.
>
>



Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408186
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste