PDA

Ver la Versión Completa : Primeras letras en mayúscula


pablo
20-04-2005, 02:00:00
hola!
1)alguno conoce un algoritmo para colocar todas las primeras letras de las palabras de una oracion en mayúscula?

2) Alguna manera de que al minimizar una ventana showmodal se minimizen todas las que estan abiertas detrás?

saludos
pablo

delphi.com.ar
20-04-2005, 14:46:19
Tengo una version de esta función en Delphi, pero no aquí... si te sirve te mando la que hice para VB:

Private Const CHR_LITERALS = "abcdefghijklmnñopqrstuvwxyzáéíóúàèìòùäëïöüABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚÀÈÌÒÙÄËÏÖÜ0123456789"

' Como la función de Oracle o el Capitalize de otros lenguajes
' Pone en mayúsculas la primer letra de cada palabra y en minúsculas el resto
Public Function InitCap(ByVal AText As String) As String
Dim Result As String
Dim PrevChar As String
Dim I As Integer
Result = LCase(AText)
PrevChar = Chr(0)
For I = 1 To Len(AText)
If InStr(1, CHR_LITERALS, PrevChar) = 0 Then
Result = Left$(Result, I - 1) & UCase(Mid$(Result, I, 1)) & Mid$(Result, I + 1)
End If
PrevChar = Mid$(Result, I, 1)
Next I

InitCap = Result
End Function


Saludos!

jachguate
20-04-2005, 15:25:52
Te dejo esta función, que no será optima pero hace el trabajo:


Function jachStrProperCase(s : String) : String;

Var
i : Integer;
up : Boolean;

Begin
result := '';
up := True;
for i := 1 to length(s) do
Begin
if up Then
result := result + AnsiUpperCase(s[i])
else
result := Result + AnsiLowerCase(s[i]);
up := s[i] = ' ';
if up and (length(s) >= (i + 2)) and (s[i+2] = ' ') Then
// En el caso especial de palabras de una letra, se dejan en minúscula!
up := false;
end;
end;


Hasta luego.

;)

TEN
10-08-2015, 18:29:19
como hago para que un label me ponga la primer letra de cada palabra en mayuscula

Casimiro Notevi
10-08-2015, 19:26:27
Usa el ejemplo de jachguate.

shoulder
11-08-2015, 18:33:20
function Capitalize(Str: string): string;
var Index: Cardinal;
begin
for Index := 1 to Length(Str) do
if (Index = 1) or (Str[Index - 1] = ' ') then
if Str[Index] in ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y',

'z','á','é','í','ó','ú','ñ'] then
Dec(Str[Index], 32) else
else
if Str[Index] in ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y',
'Z','Á','É','Í','Ó','Ú','Ñ'] then
Inc(Str[Index], 32);
Result := Str;
end;

ecfisa
11-08-2015, 20:23:40
Hola.

Para sumar opciónes: Convertir un cadena donde cada Palabra Primera con mayuscula (http://www.clubdelphi.com/foros/showthread.php?t=56071)

Y una que contempla otros delimitadores ademas del espacio:

function UpperFirstChar(str: string): string;
const
SEP = '|°!"#$%&/()={}[]¿?¡''''+*-_.,;:<> '; // (*)
var
i : Integer;
begin
Result := LowerCase(str);
Result[1] := UpCase(Result[1]);
for i := 1 to Length(Result) - 1 do
if Pos(Result[i], sep) <> 0 then
Result[i+1] := UpCase(Result[i+1]);
end;

(*) Caracteres que quieras considerar como separadores de palabra


Saludos :)

nlsgarcia
12-08-2015, 03:03:35
TEN,


...como hago para que un label me ponga la primer letra de cada palabra en mayuscula...

:rolleyes:

Revisa este código:

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
function CapitalLetterText(Sender: TObject) : String;
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

const
MsgUsr : String = 'test de primera letra en mayúsculas en cada palabra de un label, edit o memo';

var
Form1: TForm1;

implementation

{$R *.dfm}

// Primera letra en mayúscula en cada palabra de un string
function CapitalLetterString(Value : String) : String;
var
SL : TStringList;
i : Integer;

begin
SL := TStringList.Create;
ExtractStrings([' '],[],PChar(Value),SL);
for i := 0 to SL.Count - 1 do
SL.Strings := Uppercase(Copy(SL.Strings[i],1,1)) + Lowercase(Copy(SL.Strings[i],2,Length(SL.Strings[i])));
SL.Delimiter := ' ';
Result := SL.DelimitedText;
SL.Free;
end;

// Primera letra en mayúscula en cada palabra de un label, edit o memo
function TForm1.CapitalLetterText(Sender : TObject) : String;
var
SL1, SL2 : TStringList;
i,j : Integer;
AuxStr : String;

begin

if (Sender is TEdit) then
AuxStr := TEdit(Sender).Text;

if (Sender is TLabel) then
AuxStr := TLabel(Sender).Caption;

if (Sender is TEdit) or (Sender is TLabel) then
begin
SL1 := TStringList.Create;
ExtractStrings([' '],[],PChar(AuxStr),SL1);
for i := 0 to SL1.Count - 1 do
SL1.Strings[i] := Uppercase(Copy(SL1.Strings[i],1,1)) + Lowercase(Copy(SL1.Strings[i],2,Length(SL1.Strings[i])));
SL1.Delimiter := ' ';
Result := SL1.DelimitedText;
SL1.Free;
end;

if (Sender is TMemo) then
begin
SL1 := TStringList.Create;
SL2 := TStringList.Create;
for i := 0 to TMemo(Sender).Lines.Count - 1 do
begin
AuxStr := TMemo(Sender).Lines.Strings[i];
ExtractStrings([' '],[],PChar(AuxStr),SL1);
for j := 0 to SL1.Count - 1 do
SL1.Strings[j] := Uppercase(Copy(SL1.Strings[j],1,1)) + Lowercase(Copy(SL1.Strings[j],2,Length(SL1.Strings[j])));
SL1.Delimiter := ' ';
SL2.Add(SL1.DelimitedText);
SL1.Clear;
end;
Result := SL2.Text;
SL1.Free;
SL2.Free;
end;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Label1.Caption := MsgUsr;
Edit1.Text := MsgUsr;
Memo1.Lines.Add('l1 ' + MsgUsr);
Memo1.Lines.Add('l2 ' + MsgUsr);
end;

procedure TForm1.FormShow(Sender: TObject);
begin
Button1.SetFocus;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption := CapitalLetterText(Label1);
Edit1.Text := CapitalLetterText(Edit1);
Memo1.Lines.Text := CapitalLetterText(Memo1);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
MessageDlg(CapitalLetterString(MsgUsr),mtInformation,[mbOK],0);
end;

end.

El código anterior en Delphi 7 sobre Windows 7 Professional x32, [I]Permite poner en mayúscula la primera letra de cada palabra de un Edit, Label, Memo o String según se muestra en la siguiente imagen:

http://i.imgur.com/ZIKV9ER.gif

Espero sea útil :)

Nelson.

Neftali [Germán.Estévez]
12-08-2015, 15:52:43
1)alguno conoce un algoritmo para colocar todas las primeras letras de las palabras de una oracion en mayúscula?
2) Alguna manera de que al minimizar una ventana showmodal se minimizen todas las que estan abiertas detrás?


No se si alguien te lo ha comentado ya, pero aprovecha para revisar la Guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php).
Por favor, temas diferentes, hilos diferentes.

Gracias.

Casimiro Notevi
12-08-2015, 16:59:20
No se si alguien te lo ha comentado ya, pero aprovecha para revisar la Guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php).
Por favor, temas diferentes, hilos diferentes.
Gracias.
10 años ya :)

Neftali [Germán.Estévez]
12-08-2015, 18:11:41
:eek::eek::eek::eek:

Nada, ni caso...
No se porqué me ha saltado este hilo como nuevo y he contestado sin mirar la fecha...

escafandra
13-08-2015, 16:46:01
Aquí (http://delphiaccess.com/foros/index.php/topic/1882-poner-en-mayúscula-la-primera-letra-de-cada-palabra/?hl=%2Bprimera+%2Bletra+%2Bpalabra) tienes unos cuantos ejemplos para poner en mayúsculas la primera letra de cada palabra.


Saludos.