|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - Linspire
1
« en: Miércoles 20 de Agosto de 2008, 00:42 »
Me parece que esto es lo que necesitas, buena suerte!. Image1->Canvas->Font->Color=clWhite; Image1->Canvas->Brush->Style=bsClear; Image1->Canvas->TextOutA(110,360,"Universidad Autónoma Chapingo"); Image1->Picture->SaveToFile("C:\ejemplo.bmp"); ShowMessage("Archivo guardado");
2
« en: Viernes 30 de Mayo de 2008, 09:10 »
La verdad es que es una severa tontería lo que estás haciendo, y como ya me estoy muriendo de sueño me limitaré a colocarte un fragmento de código para insertar un registro, te recomiendo que uses el TTable en lugar de TQuery, éste último a mi me funcionaba y después dejaba de hacerlo, en cambio el primero no me ha dado problemas. void __fastcall TForm1::nuevo_registro(TStringGrid * grid, TTable * tabla) { String grueso, ancho, largo, def, clase; int i,piezas,pt; double volm3; tabla->TableName="inventario"; tabla->Open(); for(i=1;i<grid->RowCount;i++) { grueso=grid->Cells[1][i]; ancho=grid->Cells[2][i]; largo=grid->Cells[3][i]; if(!grid->Cells[4][i].IsEmpty()) piezas=grid->Cells[4][i].ToInt(); else piezas=0; if(!grid->Cells[5][i].IsEmpty()) pt=grid->Cells[5][i].ToInt(); else pt=0; if(!grid->Cells[6][i].IsEmpty()) volm3=grid->Cells[6][i].ToDouble(); else volm3=0; if((grueso.IsEmpty()==true)||(ancho.IsEmpty()==true)||(piezas==0)||(volm3==0)) NULL; else { tabla->Insert(); tabla->FieldByName("Grueso")->Value=grueso; tabla->FieldByName("Ancho")->Value=ancho; tabla->FieldByName("Largo")->Value=largo; tabla->FieldByName("Piezas")->Value=piezas; tabla->FieldByName("Volpt")->Value=pt; tabla->FieldByName("Volmc")->Value=volm3; tabla->FieldByName("Definicion")->Value="Madera aserrada"; tabla->FieldByName("Especie")->Value="Pino"; tabla->FieldByName("Clase")->Value="Producto primario"; tabla->Post(); } } tabla->Close(); }
Suerte!.
3
« en: Viernes 30 de Mayo de 2008, 08:47 »
De hecho en la ayuda de Builder hay un artículo muy completo sobre este componente y aunque es un poco deficiente si lo lees con atención te servirá de mucho, yo estuve buscando información sobre lo mismo hace tiempo pero encontré muy poco, por lo tanto tuve que ponerme a pensar un poco. String sql,elemento="Aserraderos",nelemento,coef,fecha,ctotal,cprom; double coeficiente,suma=0,promedio,poblacion; // TColor color_inicial=clNavy; TColor colores[8]={clInactiveCaption,clBlue,clGreen,clMaroon,clOlive,clFuchsia,clLime}; int i,n,aleatorio; sql="SELECT Elemento, Cantidad FROM configuracion WHERE ELEMENTO LIKE '"+elemento+"'"; Query1->SQL->Clear(); Query1->SQL->Add(sql); Query1->Open(); n=Query1->FieldByName("Cantidad")->AsInteger; Query1->Close(); StringGrid2->RowCount=n+1; fecha=StringGrid1->Cells[StringGrid1->Col][StringGrid1->Row]; StringGrid2->Font->Color=clMaroon; poblacion=n; Chart1->Series[0]->Clear(); // Chart1->Series[0]->AddXY(1,25,"One",clBlue); for(i=1;i<n+1;i++) { nelemento=i; sql="SELECT Coeficiente FROM coeficientes WHERE Fecha LIKE '"+fecha+"' AND Aserradero="+nelemento; Query1->Close(); Query1->SQL->Clear(); Query1->SQL->Add(sql); Query1->Open(); if(!Query1->IsEmpty()) { coeficiente=Query1->FieldByName("Coeficiente")->AsFloat; if(coeficiente==0) coef=""; else coef=FormatFloat("0.00",coeficiente)+'%'; } else { coeficiente=0; coef=""; } suma+=coeficiente; ctotal=suma; StringGrid2->Cells[0][i]=nelemento; StringGrid2->Cells[1][i]=coef; aleatorio=rand()%7; Chart1->Series[0]->AddXY(i,coeficiente,i,colores[aleatorio]); } promedio=suma/poblacion; cprom=promedio;
Lo anterior es un fragmento de código que usé alguna vez, no es la gran cosa pero puede ayudarte, lo que a mi se me hizo más dificil fue entender las propiedades de ese componente ya que son cientos y me parecieron algo confusos. Suerte!.
4
« en: Viernes 30 de Mayo de 2008, 08:32 »
mmmmm, me parece que puedo inspirarte de la siguiente forma, lo que puedes hacer es que al dar clic en el botón se ponga por ejemplo en la celda seleccionada un valor de la siguiente forma StringGrid1->Cells[StringGrid1->Col][StringGrid1->Row]="Celda editable"; //despues de esto programas el evento OnSelectCell del StringGrid void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, long Col, long Row, bool &CanSelect) { if(StringGrid1->Cells[Col][Row]=="Celda editable") CanSelect=true; else CanSelect=false; }
obviamente la propiedad GoEditing debe estar a TRUE Espero que te sirva y si no entendiste dime y te lo explico mejor ah, y para guardar los datos de la celda puedes crear una matriz temporal que almacene los valores del StringGrid cuando hagas clic en el botón, obviamente la matriz debe ser de la misma dimensión que el stringgrid, y por ejemplo puedes hacer que se recorra el stringrid y se almacenen los valores en la matriz, esto es si solo quieres que el valor dure mientras se ejecuta el programa, de lo contrario puedes almacenarlo en un archivo de texto y sustituirlo las veces que desees con un nuevo archivo conteniendo nuevos valores...
5
« en: Jueves 6 de Diciembre de 2007, 17:13 »
Si, si te he entendido, pero, todos los componentes son iguales? o son distintos? (es decir, todos son Edits (eg)o son Edits, Buttons y mas.)
6
« en: Miércoles 5 de Diciembre de 2007, 18:17 »
El form para el splash no tiene que ser precisamente el form principal, puede ser cualquier otro, simplemente tienes que cambiar el orden en que estas se crean. Puedes mostrar el form con splash y luego mostrar el principal.
Puedes usar al señor Google y buscar SplashForm C++Builder, o incluso en este mismo foro, hay varios temas tratados respecto al mismo asunto.
EI: sin spam por favor.
7
« en: Miércoles 5 de Diciembre de 2007, 18:09 »
Supongo que puedes recorrer todos los componentes con un ciclo for y cambiarles lo que deseas, puedes tomar el siguiente ejemplo para inspirarte, es para limpiar todos los Edits de un Form for (int i=0;i<ComponentCount;i++) { if(Components[i]->InheritsFrom(__classid(TCustomEdit))) ((TCustomEdit*)Components[i])->Clear(); }
Espero pueda servirte. Saludos
8
« en: Miércoles 7 de Noviembre de 2007, 04:27 »
porque no pruebas esto: TControl* control = static_cast<TControl*>(Sender); static bool pulsado = false; static TPoint posicion; if (!pulsado && Shift.Contains(ssLeft)) posicion = Point(X, Y); pulsado = Shift.Contains(ssLeft); if (pulsado) { control->Left += X - posicion.x; control->Top += Y - posicion.y; }
Lo probé en Builder 5, espero te sirva.
9
« en: Miércoles 7 de Noviembre de 2007, 04:11 »
Podrías ponder una imagen redonda que ocupe todo el SpeedButton y le pones la propiedad Flat a true. Bueno, es una idea
10
« en: Sábado 27 de Octubre de 2007, 01:51 »
Pues no es tan dificil, puedes hacer esto char tecla; tecla=key; //pones un breakpoint aqui Pues pones un breakpoint donde te lo indico, corres el programa y vas checando las teclas que vayas oprimiendo, asi de simple (eso creo) De nadas!.. y espero te sirva PD. Oviamente en el OnKeyPress
11
« en: Jueves 25 de Octubre de 2007, 17:47 »
Porque no vas almacenando todos los valores de las teclas pulsadas en un vector y al final los muestras en pantalla, o si solo lo que quieres es conocer el valor de cada caracter, no precisamente cuando se pulsa, tal vez te sirva esto: crea un ciclo for de la siguiente forma: int i; char car='a'; StringGrid1->RowCount=256; for(i=0;i<256;i++) { car++; StringGrid1->Cells[0][i]=car; }
Espero haberte ayudado, y si no explicame otra vez porque tal vez no haya entendido.
12
« en: Jueves 13 de Septiembre de 2007, 03:12 »
Eso es todo?, maldición, debería decir algo más, y si pruebas a construir todo el proyecto de nuevo?, o revisa el .cpp, quizá haya un archivo que no debiera estar ahí.
13
« en: Miércoles 12 de Septiembre de 2007, 16:28 »
Hola, sin no me quivoco puedes abrir el programa y compilar, pero cuando quieres correrlo te sale ese mensaje en la parte inferior, si es así, podías poner todo el contenido de le línea del mensaje?, quizá así pueda decirte donde está el problema, bueno, si es lo que estoy pensando entonces no es tan grave.
15
« en: Lunes 27 de Agosto de 2007, 17:41 »
Porqué no recorres la lista con un for y cuando llegues al elemento que quieres lo modificas, más o menos así: int i; String texto;
for(i=0;i<lista->Count;i++) { texto=lista; if(i==3) { lista="Nuevo texto"; break; } //bueno, creo que la variable texto está demás //pero por allá va la idea }
Suerte!..
16
« en: Sábado 18 de Agosto de 2007, 02:33 »
Hola, saludos a todos, de casualidad alguien sabe como poner la Opción goEditing a true o false de un StringGrid pero desde código (en tiempo de ejecución)? Desde ya, gracias por las respuestas.
17
« en: Jueves 26 de Julio de 2007, 21:54 »
Visita: La web de JMahi hay algo que tal vez pueda servirte. Suerte
18
« en: Viernes 25 de Mayo de 2007, 17:59 »
Excelente, ya lo he probado y funciona perfectamente, salvo por unos detalles que estoy resolviendo, si no encuentro la solución pondré otro post, pero la ruta se encuentra sin problemas. Muchisimas gracias por tu ayuda.
19
« en: Miércoles 23 de Mayo de 2007, 04:59 »
Hola, estoy haciendo una base de datos y necesito copiar archivos de cualquier unidad a una carpeta específica del disco duro. He pensado en usar algo semejante al OpenDialog para que el usuario pueda buscar el arhivo, pero no tengo idea de como detectar la ruta del archivo seleccionado. Una vez detectada la ruta pues copiar el archivo es algo sencillo. Alguien podría ayudarme? o se les ocurre una idea mejor?. Pienso que mi idea más o menos sería como usar el botón examinar que es muy común en los correos electrónicos cuando se adjunta un archivo. Gracias por las ideas aportadas.
20
« en: Lunes 16 de Abril de 2007, 18:37 »
Yo también intenté usar el OpenImageDialog pero me generó muchos problemas que al final opté por usar solamente el OpenDialog y todo salió perfectamente, te recomiendo usar este componente y evitarte problemas. Suerte!
21
« en: Sábado 31 de Marzo de 2007, 00:12 »
Tal vez este enlace pueda servirte de algo: Drag and DropSuerte!
22
« en: Lunes 26 de Marzo de 2007, 21:34 »
Si lo que quieres es que el tamaño de la imagen se amplíe cuando pase el cursor, supongo que puedes usar los eventos OnMouseUp y OnMouseOver. O si no es lo querías entonces tal vez debieras explicarte mejor.
23
« en: Martes 20 de Marzo de 2007, 18:45 »
Bueno, en verdad ya se que no se puede correr Builder sobre OS X, lo que pasa es que por ahí he leído que se puede correr Linux, Windows y OS X en una MAC, y he estado pensando en comprarme un Macbook, pero me surge la duda de que si podré correr Windows XP sobre ella y programar en Builder como si estuviera trabajando en una PC, también me gustaría trabajar con AutoCAD y con MatLab, por supuesto, todo sobre una misma computadora. Alguien podría despejar mi duda? De antemano gracias.
24
« en: Miércoles 7 de Marzo de 2007, 21:59 »
ok, muchas gracias, ya lo resolví.
25
« en: Jueves 1 de Marzo de 2007, 18:39 »
Hola, para empezar, soy nuevo en esto del PHP y no se mucho al respecto por lo que acudo a vosotros para pedir ayuda. Sucede que tengo que crear una página para ofertas de empleo, entonces lo que hice fue crear una tabla (en html, no uso ninguna base de datos), en la primera columna puse todas las ofertas disponibles y en la otra los detalles, por lo que queda más o menos así: Oferta 1 | esta es la oferta 1 Oferta 2 | Esta es la oferta 2 Oferta 3 | Esta es la oferta 3 entonces cargo los títulos de las ofertas así: <?php $file= file("ofempleo/ofertas.txt"); $n = count($file); for ($i=$n-1;$i>=0;$i--){ $dato= explode ("|<|",$file[$i]); echo "<font style='font-family: arial; font-size: 13px; color: darkblue;'><b>$dato[0]</font></b> <a href=#>Ver</a><br>"; } ?>
Y pues como ven solo estoy cargando los títulos. este es el archivo .txt Oferta1|<|oferta010307.txt|<|1|<| Oferta2|<|oferta020307.txt|<|2|<| Oferta3|<|oferta040307.txt>|<|3|<| Y pues lo que quiero es que los detalles de la oferta siempre estén ocultas, por lo tanto, la hacer clic en el vinculo Ver que se cargue el archivo en la segunda columna. Pero no se como hacerlo, alguien podría ayudarme?. De antemano gracias.
|
|
|